Assembly 测试$1,%al在组装中做什么?
所以在%eax=x中有一个值 我有以下几句话:Assembly 测试$1,%al在组装中做什么?,assembly,x86,bitwise-and,Assembly,X86,Bitwise And,所以在%eax=x中有一个值 我有以下几句话: tests $1,%al je .L2 所以我知道它在做1&%al,如果相等,它会跳。我的问题是,给定%eax是x,那么%al是什么(我知道%al是最低有效字节。我想知道用x表示它是什么)。它等于1意味着什么?AL是EAX的最低有效字节 AL是EAX的最低有效字节 AL是EAX的最低有效字节 AL是EAX的最低有效字节 就x而言,%al实际上只是最低有效字节。您所做的只是查看“x的一部分”,或是对x的总值贡献高达255的部分。听起来可能很模糊 这
tests $1,%al
je .L2
所以我知道它在做1&%al,如果相等,它会跳。我的问题是,给定%eax是x,那么%al是什么(我知道%al是最低有效字节。我想知道用x表示它是什么)。它等于1意味着什么?AL是EAX的最低有效字节 AL是EAX的最低有效字节 AL是EAX的最低有效字节 AL是EAX的最低有效字节 就x而言,%al实际上只是最低有效字节。您所做的只是查看“x的一部分”,或是对x的总值贡献高达255的部分。听起来可能很模糊
这可能意味着x是奇数,因为它有一个最低有效值1,在这种情况下,你不必把x作为一个整体来看待。我无法得出任何其他强有力的结论 就x而言,%al实际上只是最低有效字节。您所做的只是查看“x的一部分”,或是对x的总值贡献高达255的部分。听起来可能很模糊
这可能意味着x是奇数,因为它有一个最低有效值1,在这种情况下,你不必把x作为一个整体来看待。我无法得出任何其他强有力的结论 就x而言,%al实际上只是最低有效字节。您所做的只是查看“x的一部分”,或是对x的总值贡献高达255的部分。听起来可能很模糊
这可能意味着x是奇数,因为它有一个最低有效值1,在这种情况下,你不必把x作为一个整体来看待。我无法得出任何其他强有力的结论 就x而言,%al实际上只是最低有效字节。您所做的只是查看“x的一部分”,或是对x的总值贡献高达255的部分。听起来可能很模糊 这可能意味着x是奇数,因为它有一个最低有效值1,在这种情况下,你不必把x作为一个整体来看待。我无法得出任何其他强有力的结论 EAX寄存器(累加器寄存器)在逻辑上可分为:
- AX 2最低有效字节(16位)
- AX的高字节
- AX的AL低位字节(整体最低有效字节)
- AX 2最低有效字节(16位)
- AX的高字节
- AX的AL低位字节(整体最低有效字节)
- AX 2最低有效字节(16位)
- AX的高字节
- AX的AL低位字节(整体最低有效字节)
- AX 2最低有效字节(16位)
- AX的高字节
- AX的AL低位字节(整体最低有效字节)
如果这是从一些C代码生成的,那么是否可以假设X的类型是一个字节,并且不需要在管道中发送更大的字来进行比较?为什么使用
C
和gcc
标记?这是否与编译器生成的程序集有关?也许这会有助于查看相关的C源代码行。我正在从程序集生成C代码。我知道测试与if语句有关。如果al
(因此ax
和eax
)是偶数,它将跳转。Danke!!这是因为奇数的al&1=1?为什么要使用c
和gcc
标记?这是否与编译器生成的程序集有关?也许这会有助于查看相关的C源代码行。我正在从程序集生成C代码。我知道测试与if语句有关。如果al
(因此ax
和eax
)是偶数,它将跳转。Danke!!这是因为奇数的al&1=1?为什么要使用c
和gcc
标记?这是否与编译器生成的程序集有关?也许这会有助于查看相关的C源代码行。我正在从程序集生成C代码。我知道测试与if语句有关。如果al
(因此ax
和eax
)是偶数,它将跳转。Danke!!这是因为奇数的al&1=1?为什么要使用c
和gcc
标记?这是否与编译器生成的程序集有关?也许这会有助于查看相关的C源代码行。我正在从程序集生成C代码。我知道测试与if语句有关。如果al
(因此ax
和eax
)是偶数,它将跳转。Danke!!这是因为奇数的al&1=1,所以这类似于(x&0x0FF)