我有一些汇编代码的行为不符合预期,特别是这些行:
cmp $0x5, %eax
jg
我正在单步执行 gdb,并使用 cmp 在该行上放置一个断点。 此时,eax 的值是
0x1
因此,0x5 大于 0x1,因此应该进行跳转。然而代码并没有跳转。
我在这里错过了一些简单的事情吗?
我认为您的困惑是由&#^?%*$ 引起的! AT&T 语法:)
按照英特尔自己的语法,它会是
cmp eax, 5
jg
(恕我直言)使得如果 eax 的值大于 5 则跳转更加明显。
检查文档。 Intel 语法更清晰:http://en.wikibooks.org/wiki/X86_Assembly/Control_Flow