如何使用ONLY mov,add,sub,neg限制4个指令中的x = 2a + 3b?

Lio*_*ior 6 assembly add mov x86-16

假设x是一个寄存器,其值不知道.我必须让x=2a+3b地方ab有未知值.

我可以用8086个汇编指令mov,add,sub,neg只.mul不允许使用该指令,并且仅限4条指令.

它甚至可能吗?

Ted*_*opp 10

重写你的表达:

2a + 3b = 2(a + b) + b = (a + b) + (a + b) + b
Run Code Online (Sandbox Code Playgroud)

请注意,您只需要计算(a + b)一次的值.

  • 仅供参考,这是常见的子表达式消除与代数减少相结合(减少后跟CSE),只是因为OP想要做进一步的研究. (2认同)