Адресация в процессоре Nios II

Процессор Nios II использует для адресации 32-битный адрес, при этом память является адресуемой по байтам. С помощью команд можно записывать/считывать слова (32), полуслова (16) и байты данных(8). Чтение или запись данных по адресам, которые не связаны с памятью или периферийными устройствами, приводит к неопределенным результатам. В процессоре NIOS II используются следующие способы адресации.

- Непосредственная адресация. 16 битный операнд присутствует в команде. Он может быть дополнен знаковым разрядом до 32 разрядов при выполнении арифметической операции.

- Регистровая адресация. Операнды находятся в регистрах процессора.

- Относительная регистровая адресация. Эффективный адрес операнда получается путем суммирования содержимого регистра и знакового 16 разрядного смещения, находящегося в самой команде.

-Косвенная регистровая адресация. Содержимое регистра является эффективным адресом операнда. Этот способ эквивалентен предыдущему способу, когда смещение равно нулю.

- Абсолютная адресация. 16-битный абсолютный адрес операнда может быть определен путем использования смещения относительно регистра r0, который всегда равен нулю.

 

Форматы команд

Исполнимые команды кодируются 32 разрядными словами. В языке ассемблер могут применяться псевдокоманды, которые при трансляции будут заменены одной или двумя исполнимыми командами.

В процессоре Nios II используются 3 различных формата команд [14].

· I-тип. Поля A и B, шириной 5 бит, используются для определения регистров. Для непосредственных операндов используется поле IMMED16, которое при необходимости может быть расширено до 32 бит.

· R-тип. Поля A,B и C, имеющие ширину 5 бит, используются для определения регистров. Поле OPX используется для расширения кода операций.

· J-тип. Данный тип команд используется для инструкций вызова подпрограмм.

Во всех случаях шесть младших битов команды определяют код операции, остальные биты используются для определения регистров, непосредственных операндов или для расширения поля кода операции.

 

 

3 формата команд:

I – типа;

31 27 26 22 21 6 5 0

А В IMMED 16 КОП

 

R – типа;

31 27 26 22 21 17 16 6 5 0

А В С OPX КОП

 

J – типа.

31 6 5 0

IMMED 26 КОП

Список команд