Ассемблер MIPS/Инструкции
Существует 3 типа инструкций:
- R (register) - Команды, работающие с регистрами. 3 регистра в качестве операндов, регистр назначения, первый аргумент и второй аргумент.
- I (immediate) - Команды, работающие с регистрами и числами. 2 регистра и число в качестве операндов.
- J (jump) - Инструкции перехода, в качестве операнда - 26 битный адрес.
Арифметические инструкции
правитьADD (R) / ADDU (R) / ADDI (I) / ADDIU (I) |
---|
Арифметическое сложение. Варианты ADDU и ADDIU игнорируют переполнение.
add $t4,$t5,$t6 # t4 = t5 + t6 addi $t4,$t5,C # t4 = t5 + C ; C - число
SUB (R) / SUBU (R) / SUBI (I) / SUBIU (I) |
---|
Арифметическое вычитание. Варианты SUB и SUBIU игнорируют переполнение.
sub $t4,$t5,$t6 # t4 = t5 - t6 subi $t4,$t5,C # t4 = t5 - C ; C - число
Логические инструкции
правитьAND (R) / ANDI (I) |
---|
Побитовое логическое И.
and $t4,$t5,$t6 # t4 = t5 & t6 andi $t4,$t5,C # t4 = t5 & C ; C - число
OR (R) / ORI (I) |
---|
Побитовое логическое ИЛИ.
or $t4,$t5,$t6 # t4 = t5 | t6 ori $t4,$t5,C # t4 = t5 | C ; C - число
NOR (R) |
---|
Логическое отрицание.
nor $t5,$t6,$t7 # t5 = ~(t6|t7)
XOR (R) / XORI (I) |
---|
Логическое сложение.
xor $t5,$t6,$t7 # t5 = t6^t7
Инструкции перехода
правитьBEQ |
---|
Branch on EQual
beq $s,$t,target #Перейти на метку target, если $s = $t
BGEZ |
---|
Branch on Greater than or Equal to Zero
bgez $s,target #Перейти на метку target, если $s >= 0
BGEZAL |
---|
Branch on Greater than or Equal to Zero And Link
bgezal $s,$t,target #Перейти на метку target, если $s >= 0 , и сохранить адрес в $ra
BGTZ |
---|
Branch on Greater Than Zero
bgtz $s,target #Перейти на метку target, если $s > 0
BLEZ |
---|
Branch on Less than or Equal to Zero
blez $s,target #Перейти на метку target, если $s <= 0
BLTZ |
---|
Branch on Less Than Zero
bltz $s,target #Перейти на метку target, если $s < 0
BLTZAL |
---|
Branch on Less Than Zero And Link
bltzal $s,target #Перейти на метку target, если $s < 0, и сохранить адрес в $ra
BNE |
---|
Branch on Not Equal
bne $s,$t,target #Перейти на метку target, если $s != $t