我在理解这一点时遇到了问题。它使用英特尔语法
cmp eax, 0x19
ja greatereax包含值-40。http://en.wikibooks.org/wiki/X86_Assembly/Control_Flow告诉我ja是来自上一次cmp的无符号比较。
据我所知,如果arg1 (0x19)高于arg2 (0xffffffd8),则应该跳转
0x19在我看来比0xffffffd8小。正在执行跳转。任何帮助理解我有缺陷的逻辑的人都非常感谢!
发布于 2011-04-04 22:43:43
这有点难以回答,因为不同的汇编器颠倒了操作数的顺序。从外观上看,您似乎在使用英特尔语法汇编,在这种情况下,您拥有的大致相当于if (unsigned)eax > 0x19 goto greater。在这种情况下,跳跃是合理的。
发布于 2012-02-15 09:53:25
也许,0xffffd8是2的补码32位中的负数。0x19为正。
https://stackoverflow.com/questions/5540067
复制相似问题