【计算机系统设计】实践笔记(6)改进数据通路:lw和sw指令
生活随笔
收集整理的這篇文章主要介紹了
【计算机系统设计】实践笔记(6)改进数据通路:lw和sw指令
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
不想多說了……前面的鋪墊足夠了,剩下的自己做做應該也會了,如果遇到問題,就搜一下自己查閱就好。
這篇水過,沒有太多技術點。
唯一注意的是,引入的RAM和ROM的clk觸發問題,可能引起時序問題,等實際測試遇到問題再解決,問題出現之前也不知道會遇到啥。
測試
.data a: .word 0x64.text nop add $1,$2,$3 # $1 = 2 + 3 = 5 addu $2,$4,$1 # $2 = 4 + 5 = 9 sub $4,$2,$1 # $4 = 9 - 5 = 4 subu $5,$4,$3 # $5 = 4 - 3 = 1and $6,$7,$8 # $6 = 0111 and 1000 = 0 or $7,$6,$8 # $7 = 0 or 1000 = 8 xor $7,$6,$8 # $7 = 0000 xor 1000 = 1000 = 8 nor $8,$7,$6 # $8 = not (1000 or 0) = 11111111111110111slt $10,$11,$12 # $10 = 11 < 12 = 1 # 應該用負數驗證,以后再說 sltu $10,$12,$11 # $10 = 12 > 11 = 0# sllv $12,$5,$13 # $12 = 1101 << 1 = 1101_0 = 1A 【注意此處的倒置問題! sllv rd,rt,rs】 # srlv $12,$5,$13 # $12 = 1101 >> 1 = 110 = 6 # srav $14,$5,$15 # $14 = 1111 >>> 1 = 111 = 7 應該用負數驗證,以后再說# 上面3條是錯誤的!我們應該改的不是使用,而是內部運算邏輯 # 對于使用者來說,邏輯就是 $13 << $5 # 而實際的編碼是 rt = $13,rs = $5,這與一般的指令不一樣 # 因此,我們在ALU運算中 rt--B,rs--A,應該是 【B << A】,而不是 A >> B。 sllv $12,$13,$5 # $12 = 1101 << 1 = 1101_0 = 1A srlv $12,$13,$5 # $12 = 1101 >> 1 = 110 = 6 srav $14,$15,$5 # $14 = 1111 >>> 1 = 111 = 7 應該用負數驗證,以后再說sll $16,$17,2 # $16 = 1_0001 << 2 = 100_0100 = 44 srl $16,$18,2 # $16 = 1_0010 >> 2 = 0100 = 4 sra $16,$19,2 # 應該用負數驗證,以后再說 $16 = 4################ I type test ################# addi $17,$7,-1 # $17 = 8 - 1 = 7 測試符號擴展 addiu $17,$7,-2 # $17 = 8 - 2 = 6 andi $17,$8,1 # $17 = 1 測試zero extension ori $17,$8,0 # $17 = ffff_fff7 = ffff_fff7 xori $17,$8,15 # $17 = ffff_fff7 xor 0000_000f = ffff_fff8 lui $17,100 # $17 = 前16位是64_后16位是0beq $0,$10,s1 # 0 = 0,jump! nop nop nops1: addi $10,$10,1 # $10 = 1 beq $0,$10,s1 # 0 != 1,don't jump bne $0,$0,s3 # not jump bne $0,$10,s2 # 0 != 1,jump nop nop nops2: lw $30,0($0) # $30 = mem[0] = 0x64 sw $10,4($0) # mem[4] = 0x1 jr $16 # PC = 4s3:總結
以上是生活随笔為你收集整理的【计算机系统设计】实践笔记(6)改进数据通路:lw和sw指令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 结扎后输卵管疏通术怎么做
- 下一篇: 神角技巧手游工厂王国隐藏宝箱在哪