计算机组成原理与接口技术(二)

通过编译一个字符串复制过程,来展示如何使用C字符串
void strcpy(char x[],char y[])
{
int i;
i=0;
while((x[i] = y[i])!='\0')
i+=1;
}
strcpy:
addi $sp,$sp,-4
sw   $s0,0($sp)
add $s0,$zero,$zero
L1:add $t1,$s0,$a1
lbu $t2,0($t1)
add $t3,$s0,$a0
sb $t0,0($t3)
beq $t2,$zero,L2
addi $s0,$s0,1
j L1
L2:lw $s0,0($sp)
addi $sp,$sp,4
jr $ra


MIPS中32位立即数和地址的寻址
1、32位立即数

使用lui指令加载高16位
使用ori插入低16位
2、分支和跳转中的寻址
j型:除了6位操作码之外,其余位都是地址字段
j 10000
汇编为下面的格式
2                10000
6位              26位
分支指令除了规定分支地址之外还必须指定两个操作数。
bne   $s0,$s1,Exit
5    16    17      Exit
程序计数器=寄存器+分支地址

3 、MIPS寻址模式总结
1)立即数寻址,操作数是位于指令自身中的常数
2)寄存器寻址,操作数是寄存器
3)基址或偏移寻址,操作数在内存中,其地址是指令中基址寄存器和常数的和
4)pc相对寻址,地址是pc和指令中常数的和
5)伪直接寻址,跳转地址是指令中26为字段和pc高位相连而成

猜你喜欢

转载自blog.csdn.net/weixin_37603007/article/details/79779529