作者BF3716 (JS)
看板Grad-ProbAsk
标题Re: [理工] [计组]-MIPS语言
时间Sun Sep 20 23:08:23 2009
: : Pseudoinstruction what is accomplishes Solution
无法直接在MIPS执行 简述指令的功能 合法的MIPS指令
[1] : li $t5,small $t5=small addi $t5,$zero,small
将16Bit常数载入到$t5 # $t5 <--0 +small
addi是个可以直接加上常数的指令
[2] : li $t5,big $t5=big lui $t5,upper-hulf(big)
: ori $t5,lower-hulf(big)
将32Bit常数载入到$t5
这个要先了解一下定址法的运作方式
一个立即(或基底定址)的常数栏(位址栏)最多都只有16个Bits可表示
而现在要载入一个具有32Bit的数值势必无法一次完成
lui $t5,upper-hulf(big) 这道指令是先载入高位元的16bits
ori $t5,lower-hulf(big) 这道指令是加上较低位元的16bits
lui会将较高的16bit载入之後,最低的16bit先补上16个0
ori就是指or的逻辑运算,那个i是拿常数来运算的意思
[3] : lw $t5,big($t3) $t5=Memory[$t3+big] li $at,big
: ^^^ add $at,$at,$t5 <-应该有错
: 理由同上,因为他是32bits lw $t5,0($at)
没办法一次处理完成
既然没办法一次处理就要知道要去哪里存取
li $at,big # 所以要先将偏移量big放在大型常数暂存器$at
add $at,$at,$t3 # 而你实际上要去抓的位置是$t3+big
lw $t5,0($at) # 将正确位置放在$at以後,不再需要偏移量,可直接载入了
如果这几题看不太懂的话,先去读一下定址法可能会更了解一点
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.37.170.171
1F:→ BF3716:抱歉,有白有绿混在一起,请一起看吧 orz 09/20 23:10
2F:推 gn00618777:哪里 有人回我我就很感激了 谢谢哦 我在来研究一下 09/21 00:18
3F:→ yesa315:你说ori是加上较低的16位元 前提是要t5较低的16位元都是0 09/21 09:17
4F:→ yesa315:我多话了 别里我 09/21 10:23