看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《gn00618777 (123)》之銘言: : ※ 引述《gn00618777 (123)》之銘言: : li $t5,big $t5=big lui $t5,upper-hulf(big) : : ori $t5,lower-hulf(big) : lw $t5,big($t3) $t5=Memory[$t3+big] li $at,big : : add $at,$at,$t5 : : lw $t5,0($at) : 仔細去研究發現更多問題.. : (1)如果不看題目,怎麼知道哪一個是虛擬碼和可以執行的碼,虛擬碼的指令 : 也會用在可以執行的上面,例如:li 這我不知道 : (2)指令格式 op rs rt rd shamt funct,我查某學校的專題發表.. : 他說 rs是第一個來源運算元暫存器 : rt是第二個來源運算元暫存器 : rd是目的暫存器,用來儲存運算結果 : 例子: add $t0,$s1,$s2 : 照他上面這麼解釋$s2不就變成儲存結果的暫存器 : 阿不是$t0才是儲存的暫存器嗎? 課本指令那章看過了嘛,你已經弄混了 add $t0,$s1,$s2 是指令 (rd rs rt) assemble出byte code以後會變成 000000 00000 00000 00000 00000 000000 這樣的東西 ( op rs rt rd shamt func ) : (3) 我有查很多MIPS指令,就是沒看到過li 的確課本沒講 : (4) 上面的程式碼 li $t5,big 需要分lui和ori來做,既然都有li $at,big : 位啥不直接 li $at,big 然後 add,$t5,$zero,$at? I-format指令,限制為16bit 若要讀入32bit數字,或是比16bit更大的 那就需要用lui + ori 分兩次做 : (5)都已經是固定的R-type指令的 op rs rt shamt funct : 6 5 5 5 6 位元 : 為何可以執行add $t5,$t3,$at 指令,$at可以儲存更大的"big" : 表示他不是5位元了? 你現在這個5bit 指的是第幾個register 舉例來說,byte code 規則假設 $at = 00001 $bt = 00002 這跟 $at 可以放 32bit 資料是兩回事 : 先暫時問這樣好了= = 怕嚇到大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.93.39