作者gn00618777 (123)
看板Grad-ProbAsk
标题Re: [理工] [计组]-MIPS组合语言
时间Thu Nov 26 01:07:20 2009
我前一个问题问的太不清楚了再重新问一个
我只对虚拟直接定址有问题
格式 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)
1F:推 gensim:错在你把10进制当16进制 11/26 01:15
2F:→ gn00618777:00040020 8个数字是老师假设的,8个数字应该为16进位阿 11/26 07:54
3F:→ gn00618777:2^4=16 32/4=8,所以我才觉得老师这样说怪怪的 11/26 07:57