看板 Grad-ProbAsk 關於我們 聯絡資訊
我前一個問題問的太不清楚了再重新問一個 我只對虛擬直接定址有問題 格式 j(6bit)address(26bit) 首先老師教我們 由指令較低的26位元和PC較高的位元合併 例: j---2500 2500*4=10000換成16進位=00002710 而我們只要前面的7位數字(28bit,之所以28bit是因為左移2次所以乘4) 接下來和PC一個4bit合併,假設PC指到 1xxxxxxx,我們只需最前面的1位(4bit) 最後變成10002710H 而有一題 40020--------------Loop: sll $t1,$s3,2 40024----------------------add $t1,$t1,$s6 40028----------------------lw $t0,0($t1) 40032----------------------bne $t0,$s5,Exit 40036----------------------addi $s3,$s3,1 40040----------------------j Loop 最後一個的機械碼為 2-----10005 照老師講解的我做一次,希望能看我觀念錯再哪 假設他為8bit,你經過左移2次(*4)的值出來應該為 0040020(因為pc的高位元0) 跟pc+起來所以為00040020,要求原本的,所以要右移回來2次 00040020 = 0000--0000--0000--0100--0000--0000--0010--0000 變成0000--0000--0000-0000--0001--0000--0000--0000--1000 答案為j--10008,可是答案卻是j--10005 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.168.61.146 ※ 編輯: gn00618777 來自: 218.168.61.146 (11/26 01:10)
gensim:錯在你把10進制當16進制 11/26 01:15
gn00618777:00040020 8個數字是老師假設的,8個數字應該為16進位阿 11/26 07:54
gn00618777:2^4=16 32/4=8,所以我才覺得老師這樣說怪怪的 11/26 07:57