看板 Grad-ProbAsk 關於我們 聯絡資訊
: : Pseudoinstruction what is accomplishes Solution 無法直接在MIPS執行 簡述指令的功能 合法的MIPS指令 [1] : li $t5,small $t5=small addi $t5,$zero,small 將16Bit常數載入到$t5 # $t5 <--0 +small addi是個可以直接加上常數的指令 [2] : li $t5,big $t5=big lui $t5,upper-hulf(big) : ori $t5,lower-hulf(big) 將32Bit常數載入到$t5 這個要先了解一下定址法的運作方式 一個立即(或基底定址)的常數欄(位址欄)最多都只有16個Bits可表示 而現在要載入一個具有32Bit的數值勢必無法一次完成 lui $t5,upper-hulf(big) 這道指令是先載入高位元的16bits ori $t5,lower-hulf(big) 這道指令是加上較低位元的16bits lui會將較高的16bit載入之後,最低的16bit先補上16個0 ori就是指or的邏輯運算,那個i是拿常數來運算的意思 [3] : lw $t5,big($t3) $t5=Memory[$t3+big] li $at,big : ^^^ add $at,$at,$t5 <-應該有錯 : 理由同上,因為他是32bits lw $t5,0($at) 沒辦法一次處理完成 既然沒辦法一次處理就要知道要去哪裡存取 li $at,big # 所以要先將偏移量big放在大型常數暫存器$at add $at,$at,$t3 # 而你實際上要去抓的位置是$t3+big lw $t5,0($at) # 將正確位置放在$at以後,不再需要偏移量,可直接載入了 如果這幾題看不太懂的話,先去讀一下定址法可能會更了解一點 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.170.171
BF3716:抱歉,有白有綠混在一起,請一起看吧 orz 09/20 23:10
gn00618777:哪裡 有人回我我就很感激了 謝謝哦 我在來研究一下 09/21 00:18
yesa315:你說ori是加上較低的16位元 前提是要t5較低的16位元都是0 09/21 09:17
yesa315:我多話了 別裡我 09/21 10:23