对于代码:
cmp $5, %eax
jg 804940f
这通过执行 %eax - $5 进行比较,然后设置一个标志(如果它更大、等于或负数),对吗?如果标志指示 %eax 大于 $5,那么 jg 将继续访问该地址?
最佳答案
它确实做了减法,但不保留结果。然后它相应地设置标志。您对第二行的看法也是正确的,如果它更大,那么它会跳转,如果不是,那么它会跳过跳转并继续执行接下来的内容。
编辑:如果您是汇编新手,您可能还会发现访问标志寄存器的内容很有帮助。在 Intel 汇编中有几种方法可以做到这一点,如果您需要低 8 位,那么您可以执行 lahf ,它将它们加载到 ah 中。如果你想要寄存器的全部内容,那么你可以使用pushf和popf。我希望这会有所帮助。
关于x86 - jg 指令在经典 Intel 处理器上有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549471/