gpt4 book ai didi

assembly - x86 ASM : useless conditional jump?

转载 作者:行者123 更新时间:2023-12-04 00:12:53 26 4
gpt4 key购买 nike

我正在查看以下 x86 汇编代码(Intel 语法):

movzx   eax, al
and eax, 3
cmp eax, 3
ja loc_6BE9A0

在我的理解中,这应该等同于 C 语言中的内容:

eax &= 0xFF;
eax &= 3;
if (eax > 3)
loc_6BE9A0();

这似乎没有多大意义,因为这个条件永远不会为真(因为如果 eax 之前与 3 进行了和-ed,则它永远不会大于 3)。我在这里遗漏了什么还是这真的只是一个不必要的条件?

另外:如果 movzx eax, al 之后立即与 3 进行和-ed,那么它也不应该是必需的,是吗?

我问这个是因为我对汇编语言不太熟悉,所以我不完全确定我是否在这里遗漏了什么。

最佳答案

你是对的:movzx 是多余的,因为下面的 。它可能是由非优化编译器生成的。

是的,如果此代码直接执行,则永远不会执行 ja 跳转。但是,如果其他地方有代码直接跳转到 cmp/ja(甚至跳转到 ja )。

关于assembly - x86 ASM : useless conditional jump?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67150201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com