※ 引述《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