我正在查看以下 x86 汇编代码(英特尔语法):
movzx eax, al
and eax, 3
cmp eax, 3
ja loc_6BE9A0
Run Code Online (Sandbox Code Playgroud)
在我看来,这在 C 中应该是这样的:
eax &= 0xFF;
eax &= 3;
if (eax > 3)
loc_6BE9A0();
Run Code Online (Sandbox Code Playgroud)
这似乎没有多大意义,因为此条件永远不会为真(因为eax如果之前与 3 进行了与运算,则永远不会大于 3)。我在这里遗漏了什么还是这真的只是一个不必要的条件?
而且:movzx eax, al如果之后它被 3 和-ed 也不应该是必要的,是吗?
我问这个是因为我对汇编语言不太熟悉,所以我不完全确定我是否在这里遗漏了一些东西。