我在Linux上使用GCC
編譯器。
我想使用64位編譯器並使用-m32
選項(32位兼容性)構建一些我的文件。我發現奇怪的(對我來說)編譯器的行爲。
我的代碼很簡單:GCC四倍大小32和64位
int main() {
int test =(((0) & 0x00000000) << (32));
return 0;
}
而且此代碼我收到與-m32
編譯器警告的32
,64
和64
:
warning: left shift count >= width of type [enabled by default]
當我試圖從assebmly code
編譯它不過:
.quad (((0) & (0x00000000)) << (32))
我只收到01的警告編譯器:
Warning: shift count out of range (32 is not between 0 and 31)
爲什麼是相同的代碼不同於c
編譯和asm
文件對於不同的編譯器(32和64位)警告?
編輯:
我在哪裏可以找到.quad
定義,我指的是代碼?
嘛,一個是從C編譯器,並從彙編另一方面,似乎沒有任何意義,使錯誤是完全一樣的,只要它們含有相同的信息。順便說一句。爲什麼這被標記爲C++? – PlasmaHH
@PlasmaHH呃,對不起,我不想將'C++'添加到標籤... – Arseniy