关于AT&T语法汇编中的cmp/jg、jle等
Regarding cmp / jg, jle, etc in AT&T syntax assembly
所以网上的每一个资源都告诉我这样的事情:
cmp %eax, %ebx
jg < something >
如果 eax 大于 ebx,将跳转到 。但是我有另一段代码似乎与此矛盾:
cmp [=11=]x2, %eax
jg < something>
当 eax 的值为 3 时,它跳转到 。
我是不是遗漏了什么,或者如果 b > a 而不是 a>b 是否执行 cmp a, b - jg?这是否也适用于其他跳转语句?
看看THIS ANSWER是否对您有帮助。如果不是,要求澄清。
向下滚动到其他人的源代码和答案中的内容以搜索此字符串...
这个biz,cmpl %eax,%edx指令,是"compare"指令
的一种形式
写了CMP
的"sense"和各种条件跳转的解释。看看它是否在这里回答了您的问题。
如果您仍然感到困惑,post 在这里留言,其他人可能会给您更好的答案。
希望对您有所帮助。
当我们阅读类似
的内容时
cmp [=10=]x2, %eax
jg < something >
我们知道所使用的汇编器是一种反转指令操作数位置的汇编器。这是因为 Intel 的语法规定目标操作数在源操作数之前,并且显然像 $0x2 这样的立即值永远不能成为目标!
了解事物的顺序后,我们现在将您的第一个代码片段解释为
cmp ebx, eax
jg < something > ;jump if EBX > EAX
第二个代码片段为
cmp eax, 2
jg < something > ;jump if EAX > 2
And does this apply to other jump statements as well?
确实如此。
所以网上的每一个资源都告诉我这样的事情:
cmp %eax, %ebx
jg < something >
如果 eax 大于 ebx,将跳转到
cmp [=11=]x2, %eax
jg < something>
当 eax 的值为 3 时,它跳转到
我是不是遗漏了什么,或者如果 b > a 而不是 a>b 是否执行 cmp a, b - jg?这是否也适用于其他跳转语句?
看看THIS ANSWER是否对您有帮助。如果不是,要求澄清。
向下滚动到其他人的源代码和答案中的内容以搜索此字符串...
这个biz,cmpl %eax,%edx指令,是"compare"指令
的一种形式写了CMP
的"sense"和各种条件跳转的解释。看看它是否在这里回答了您的问题。
如果您仍然感到困惑,post 在这里留言,其他人可能会给您更好的答案。
希望对您有所帮助。
当我们阅读类似
的内容时cmp [=10=]x2, %eax
jg < something >
我们知道所使用的汇编器是一种反转指令操作数位置的汇编器。这是因为 Intel 的语法规定目标操作数在源操作数之前,并且显然像 $0x2 这样的立即值永远不能成为目标!
了解事物的顺序后,我们现在将您的第一个代码片段解释为
cmp ebx, eax
jg < something > ;jump if EBX > EAX
第二个代码片段为
cmp eax, 2
jg < something > ;jump if EAX > 2
And does this apply to other jump statements as well?
确实如此。