第二章 计算机指令
- MIPS汇编语言
//将变量b,c,d,e相加
add a. b. c
add a. a. d
add a. a. e
//a = b + c;
//d = a - e;
add a. b. c
sub d. a. e
// f = (g + h) - (i + j);
add t0. g. h
add t1. i. j
sub f. t0. t1
在书写指令时,尽管可以使用序号0到31标示相应的寄存器,但MIPS仍然约定:用一个"$"符后面跟两个字符来代表一个寄存器。
// f = (g + h) - (i + j);
add $t0. $t1. $t2
add $t1. $t3. $t4
sub $t0. $t0. $t1
MIPS取指令的名字为lw,标示取字(load word),存储指令是sw,即(store word)
//g = h + A[8];
lw $t0 .32($s3)
add $t0 .$s2 .$t0
sw $t0 .48($s3)
将常数 4 从存储器中取出并加到寄存器 $s3 上,假设AddrConstant4是常数4的存储器地址。
lw $t0 .AddrConstant4( $s1 ) #$t0 = constant 4
add $s3 .$s3 . $t0 #$s3 = $s3 + $t0 ( $t0 == 4 )
一个避免取指令的办法是使用另一个版本的算数指令,它的一个操作数是常数。这种有常数操作数的快速加指令叫做立即数加,或者写作addi。把常数4加到寄存器$s3,只需要写:
addi $s3 .$s3 .4 #$s3 = $s3 + 4