我希望用 y86 汇编语言重新创建 x86 shl dest,src 指令。具体来说,我需要将 dest 位向左移动 4 位。谁能帮我解决这个问题?
2573 次
3 回答
2
y86 中没有移位和乘法运算。您可以通过将值添加到自身来将其向左移动一位。移位四位意味着四个加法:
addl %eax, %eax
addl %eax, %eax
addl %eax, %eax
addl %eax, %eax
于 2015-05-02T17:18:09.240 回答
0
移位操作不在 Y86 指令集中。您可以通过乘以 2^4 = 16 来模拟左移 4 位。
于 2015-05-02T17:16:13.347 回答
0
这是我们需要做的:
- 为正值构建一个乘法例程,考虑溢出。
- 弄清楚结果应该有什么符号。
- 将操作数转换为绝对值(使用否定例程。)
- 调用绝对值的乘法例程。
- 考虑并处理溢出。
- 如有必要,将所得金额转换为负数。
剩下的就看你了。顺便说一句……带符号的 32 位整数值(由 .LONG 值指定)的最大限制是 231-1 或 2,147,483,647。
于 2015-11-17T22:33:28.180 回答