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 的类型是一个字节,并且您不需要在管道中发送更大的字来进行比较?
所以 %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 的类型是一个字节,并且您不需要在管道中发送更大的字来进行比较?