作者learnerQQ (小铨)
看板ASM
标题[问题] 有个 C 程式码 转 MIPS
时间Sun Nov 15 13:00:50 2009
小弟尚未开始学组语,但是计算机组织有扯到,所以有些问题想请教大家。
是一个有关 简单 C语言叙述 转成 MIPS 指令~~
Q: 假设 $s0 存放变数 f的值, $s1 存放变数 g的值 ~ 而 $s6 存放 整数阵列 A[0] 的
记忆体位置( 即 &A[0] ) , $s7 存放 整数阵列 B[0] 的记忆体位置 (即 &B[0])
=> 将 右边的 C 语言叙述 : f = g - A[ B[4] ]; 转成 MIPS ~
我的想法 => lw $t0,16($s7) # 把阵列 B[4]的数值 暂存於 $t0
muli $t0,$t0,4 # 把 $t0 * 4
lw $s0,$t0($s6) # 把 A[ B[4] ]的数值 存放在 $s0
sub $s0,$1,$s0 # f = g - A[ B[4] ]
答案: =>
lw $t0,16($s7)
lw $s0,0($t0) # 看不懂
lw $s0,$s1,$s0
------------------------------------------------------------------------------
请问各位,我这样的写法可以吗? 答案的写法 怎麽可以这麽精简
而且 在C的叙述中 有用到阵列 A[B[4]] 可是答案怎麽都没用到 $s6
会用到巴 = =+ 我看了半天 犹豫是不是该把这傻问题 PO到这个版 = =+
可是真的看不懂了 有不妥的地方 请鞭小力一点 ....3Q
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.40.115.60
1F:→ gm560622:lw $s0,$t0($s6) $t0那个地方只能放常数 12/11 15:10
2F:→ gm560622:lw $s0,$s1,$s0 语法?? 12/11 15:12