0

我希望用 y86 汇编语言重新创建 x86 shl dest,src 指令。具体来说,我需要将 dest 位向左移动 4 位。谁能帮我解决这个问题?

4

3 回答 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 回答