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

时间:2015-02-25 16:53:03

标签: assembly x86 bitwise-and

因此%eax = x中有一个值。

我有一句话:

tests $1,%al
je .L2

所以我知道它正在做1&%al然后如果相等就跳。我的问题是%al给出%eax是x(我知道%al是最不重要的字节。我想知道x的含义是什么)。它等于1 ??

意味着什么

3 个答案:

答案 0 :(得分:2)

就x而言,%al实际上只是最不重要的字节。您正在做的只是查看x"的一部分,或者为x的总值提供高达255的值的部分。可能听起来很模糊。

这可能意味着x是奇数,因为它具有最低有效值1,在这种情况下,你不必整体看x。我无法安全地得出任何其他有力的结论。

答案 1 :(得分:1)

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

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

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

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

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

答案 2 :(得分:0)

AL是EAX中最不重要的字节。