我卡住了 在我的汇编代码中,我想比较两个值 叠加。
x86,语法AT& T
cmpl -4(%ebp), 4(%ebp)
错误:“cmp”
的内存引用太多
我认为不可能根据乘数和ebp比较两个值。有什么建议吗?
答案 0 :(得分:1)
您可以使用CMPSD指令比较内存中的两个值。
Op想要做的事情相当于:
cmpl -4(%ebp), 4(%ebp)
他可以通过分别在ESI和EDI中放置感兴趣的内存位置的地址,然后使用CMPSD memory-to-memory string-compare instruction:
来做到这一点 lea -4(%ebp), %esi
lea 4(%ebp), %edi
cmpsd
(原谅我的非专家滥用AT& T语法)。
这与任何人在实践中都会这样做有所不同。这里提供的其他答案(将值加载到寄存器中并进行比较)更加实用。如果不出意外,那些解决方案只会烧掉一个寄存器,而这个黑客会烧掉两个。
课程:在汇编程序中,几乎总有不止一种方法可以给猫皮肤。