為什麼這篇mips組合語言鄉民發文收入到精華區:因為在mips組合語言這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者gn00618777 (123)看板Grad-ProbAsk標題Re: [理工] [計組]-MI...
我前一個問題問的太不清楚了再重新問一個
我只對虛擬直接定址有問題
格式 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)