Differences between revisions 2 and 3
Revision 2 as of 2015-12-28 16:59:13
Size: 3300
Editor: ali
Comment:
Revision 3 as of 2015-12-29 11:45:05
Size: 3302
Editor: FrBrGeorge
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Конвенции, псевдоинструкции и макросы = == Конвенции, псевдоинструкции и макросы ==

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

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

  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

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

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

ArchitectureAssembler/11_ConventionsIntro (last edited 2015-12-29 11:45:05 by FrBrGeorge)