0

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

我有以下几行:

tests $1,%al
je .L2

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

4

3 回答 3

2

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

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

于 2015-02-25T17:00:49.513 回答
1

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

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

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

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

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

于 2015-02-25T17:02:26.347 回答
0

AL 是 EAX 的最低有效字节。

于 2015-02-25T16:56:06.813 回答