計算機組成原理與介面技術(二)

溺死在知識的海洋發表於2018-04-01
通過編譯一個字串複製過程,來展示如何使用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高位相連而成

相關文章