我GCC
在 Linux 上使用编译器。
我想使用 64 位编译器并使用-m32
选项(32 位兼容性)构建我的一些文件。我发现编译器的奇怪(对我而言)行为。
我的代码很简单:
int main () {
int test =(((0) & 0x00000000) << (32));
return 0;
}
对于这段代码,我收到了32
,64
和编译器64
的警告:-m32
warning: left shift count >= width of type [enabled by default]
但是当我尝试从以下位置编译它时assebmly code
:
.quad (((0) & (0x00000000)) << (32))
我只收到32 bit
编译器的警告:
Warning: shift count out of range (32 is not between 0 and 31)
为什么从不同编译器(32 位和 64 位)编译的相同代码c
和文件的警告不同?asm
编辑:
我在哪里可以找到.quad
定义,我的意思是在代码中?