Что означает func в наборе команд R-Format? - PullRequest
9 голосов
/ 03 августа 2011

Я очень плохо знаком с Язык ассемблера . Я читал об архитектуре MIPS и застрял с последним полем формата регистра (R-формат) . Вот его визуальное представление, enter image description here Может ли кто-нибудь помочь мне с , что означает шестое поле и как мы его рассчитаем? Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 03 августа 2011

Поскольку в описании упоминаются все инструкции R-типа (например, ADD, AND, SLL и другие), 6 старших разрядов (= op) установлены в 0, что означает единственный способ различатьони должны смотреть на 6 младших значащих бит (= функция).Другими словами, они определяют тип инструкции.Возможно, пример поможет.

ADD $1, $2, $3 

имеет:

op = 0 (as all R-type instructions)
rs = 2
rt = 3
rd = 1
shamt = 0
funct = 0x20 = 0b00000100000 = 32

Кодировка будет, таким образом:

0000 0000 0100 0011 0000 1000 0010 0000

Например, XOR (другой R-type) функция инструкции равна 0b100110 = 0x26 = 38.Таким образом, вы «вычисляете» его, посмотрев, какую инструкцию вы хотите закодировать.

(взято из Справочник инструкций MIPS ).

1 голос
/ 03 августа 2011

Из следующей таблицы:

http://en.wikibooks.org/wiki/MIPS_Assembly/Instruction_Formats#Opcodes

Код операции для почти всех команд R-типа - 00, поэтому функция выбирает функцию ALU.

ФункцияДля инструкций, которые совместно используют код операции, параметр funct содержит необходимые управляющие коды для различения различных команд.6 бит длиной (от 0 до 5).Пример: код операции 0x00 обращается к ALU, а функция выбирает, какую функцию ALU использовать.

...