tests $1,%al 在汇编中做了什么?

What does tests $1,%al do in assembly?

所以 %eax = x 中有一个值。

我有台词:

tests ,%al
je .L2

所以我知道它正在执行 1&%al 然后如果相等则跳转。我的问题是 %al 给定的 %eax 是什么(我知道 %al 是最低有效字节。我想知道它是什么 x)。它等于1是什么意思??

AL 是 EAX 的最低有效字节。

就x而言,%al实际上只是最低有效字节。您正在做的只是查看 "part of x",或者查看对 x 的总值贡献值最多为 255 的部分。可能听起来很模糊。

这可能意味着 x 是奇数,因为它的最小有效值为 1,在这种情况下,您不必将 x 作为一个整体来看待。我无法安全地得出任何其他强有力的结论。

EAX寄存器(累加器寄存器)在逻辑上可以分为:

  • AX 2 个最低有效字节(16 位),
  • AX的AH高字节
  • AX 的 AL 低字节(总的最低有效字节)

这意味着什么取决于什么在使用你的累加器寄存器。

通常用于IO访问、算术和中断。

如果这是从某些 C 代码生成的,是否可以假设 X 的类型是一个字节,并且您不需要在管道中发送更大的字来进行比较?