Статья: Динамическая поддержка расширений процессора в кросс-системе

Функция поведения MoveLREG_GREG (см. пример 1 в 2.2.2.1) имеет два параметра по 4 бита каждый (LREG[4;7] и GREG[0;3]). Биты [20;21] могут принимать любые значения для данной команды (в данном примере эти биты относятся к коду акселератора и используются командой запуска акселератора основного процессора). Остальные биты фиксированы и составляют КОП инструкции аскелератора.

Заметим, что совокупность всех строк форматов машинного слова задает множество допустимых кодов инструкций данного акселератора (CA в 2.1.2).

Число управляющих слотов NS задается директивой SLOTS(< NS>).

2.3. Ассемблерный синтаксис команд акселератора

Отдельная секция файла описания модели акселератора отвечает за опреде-ление синтаксиса ассемблера для системы команд этого акселератора. Более точно, эта секция определяет синтаксис для подмножества системы команд основного процессора, соответствующего командам запуска инструкций этого акселератора (см. 2.1.3.1). Это полезно для адекватного отра-жения на уровне ассемблера соответствующей семантики команд, так как одни и те же (в смысле машинных кодов) команды основного процессора (для запуска акселераторов) могут иметь разную семантику, в зависимости от конкретной конфигурации акселераторов в системе, специфичной для каждого заказчика. В дополнение к определению семантики команд акселераторов (см. 2.2), воз-можность настраивать синтаксис для этих команд является важной функцио-нальностью рассматриваемой системы, позволяющей легко получать готовую для производственного использования кросс-систему, адаптированную для специфичной конфигурации "процессор + акселераторы пользователя".

Описание ассемблерного синтаксиса системы команд состоит из трех секций:

Секция типов операндов и псевдонимов

Секция команд

Секция ограничений (constraints)

Детальное рассмотрение средств описания синтаксиса команд выходит за рамки данной статьи. Ниже приводится только краткий обзор основных возможностей.

2.3.1. Отображение ассемблерных команд в машинное слово

Общий шаблон допустимого ассемблерного синтаксиса для команд акселератора задается в виде:

command ::= mnemonic [parameter {, parameter}*]

{|| mnemonic [parameter {, parameter}*]}*

mnemonic ::= const_string

parameter ::= operand

{[const_string] [operand]}*

operand ::= const_string

const_string ::= любой текст без запятых и пробелов

Примеры возможных команд:

DMOVE ACR1.h, DM0(DA0--), ACR1.L, TM0(TA0++)

MOVE GRA, DM1(TA0+25) || ADD GR3, ACR2.H

На языке ассемблера команда состоит из мнемоники (нескольких мнемоник для параллельных команд) и набора параметров, разделенных запятой. Каждый параметр может содержать несколько частей - операндов, принадлежащих к каким-либо из описанных типов. В рамках одного параметра операнды должны отделяться непустыми строками константных символов. Комбинация мнемоник ассемблерного синтаксиса отображается в поле КОП соответс-твующей команды. Операнды (operand) отображаются на поля-операнды машинного слова. Возможно задание отображения на не непрерывные поля (когда биты поля перемежаются битами других полей).

Пример:

.types

grn [gr0:0] [gr1:1] [gr2:2] [gr3:3]

const6b $ -32 31

.mnemonics

MOVE {grn#0;2},{const6b#2;4#8;2} % 0xA8C0 0xFCC0

Описание задает команду MOVE с двумя операндами. Первый операнд типа grn является регистром общего назначения, код регистра размещается в 2х битах начиная с 0-го. Второй операнд является константой в диапазоне [-32; 31] и располагается в машинном слове в двух частях: в 4х битах, начиная со 2-го, и 2х битах, начиная с 8-го. КОП равен 1010-10XX-11XX-XXXX.

К-во Просмотров: 217
Бесплатно скачать Статья: Динамическая поддержка расширений процессора в кросс-системе