Конвенции, псевдоинструкции и макросы
Структура памяти, псевдоинструкции, макросы, понятие о конвенциях ().
- Конвенции.
- Расширенный ассемблер.
- Ассемблер MIPS предоставляет псевдокоманды, которые на самом деле не являются частью набора команд, но часто используются программистами и компиляторами. При преобразовании в машинный код псевдокоманды транслируются в одну или несколько команд MIPS. Некоторым псевдокомандам требуется временный регистр для промежуточных вычислений. Ассемблер использует для этих целей временный регистр $at.
- именование и использование регистров
Название |
Номер |
Назначение |
$zero |
0 |
Константный нуль |
$at |
1 |
Временный регистр для нужд ассемблера |
$v0–$v1 |
2-3 |
Возвращаемые функциями значения |
$a0–$a3 |
4-7 |
Аргументы функций |
$t0–$t7 |
8-15 |
Временные переменные |
$s0–$s7 |
16-23 |
Сохраняемые переменные |
$t8–$t9 |
24-25 |
Временные переменные |
$k0–$k1 |
26-27 |
Временные переменные операционной системы (ОС) |
$gp |
28 |
Глобальный указатель (англ.: global pointer) |
$sp |
29 |
Указатель стека (англ.: stack pointer) |
$fp |
30 |
Указатель кадра стека (англ.: frame pointer) |
$ra |
31 |
Регистр адреса возврата из функции |
- псевдоинструкции:
- move, li, la, lw, sw, nop
- not, abs, addu, subu, negu, mul, div, divu, remu, rol, ror
- seq, sge, sgeu, sgt, sgtu, sle, sleu, slt, slti, sltu, sltiu, sne
- b, beq, beqz, bge, bgeu, bgez, bgt,bgtu, bgtz, ble, bleu, blez, blt, bltu, bltz, bnez, bne
- syscall
- примеры:
1 ## pseudoPoly.asm
2 ## evaluate the polynomial ax2 + bx + c
3 ##
4 .text
5 .globl main
6
7 main:
8 lw $t3,x # get x
9 lw $t0,a # get a
10 lw $t1,bb # get bb
11 lw $t2,c # get c
12
13 mult $t3,$t3 # x2
14 mflo $t4 # $t4 = x2
15 nop
16 nop
17 mult $t4,$t0 # low = ax2
18 mflo $t4 # $t4 = ax2
19 nop
20 nop
21
22 mult $t1,$t3 # low = bx
23 mflo $t5 # $t5 = bx
24 addu $t5,$t4,$t5 # $t5 = ax2 + bx
25
26 addu $t5,$t5,$t2 # $t5 = ax2 + bx + c
27 sw $t5,value # value = polynomial
28
29 .data
30 x: .word 4
31 value: .word 1
32 a: .word 20
33 bb: .word -2 # the SPIM assembler does not allow the label "b"
34 c: .word 5
35
- Макроподстановки