Конвенции, псевдоинструкции и макросы

Структура памяти, псевдоинструкции, макросы, понятие о конвенциях ().

  1. Конвенции.
  2. Расширенный ассемблер.
    • Ассемблер 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

Регистр адреса возврата из функции

   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  
  1. Макроподстановки

ArchitectureAssembler2015/11_ConventionsIntro (последним исправлял пользователь FrBrGeorge 2024-06-17 12:51:16)