0
下面的代碼編譯在MSVC罰款,但GCC給出了一個警告,這真讓我心煩:非PIC處理形式不是suitible的PIC代碼。GCC警告:非PIC處理形式不是suitible的PIC代碼
你能告訴我這個警告的原因,以及如果它確實是一個潛在的問題如何解決它?我正在使用-fasm-blocks編譯選項啓用intel風格程序集,加入-fpic參數沒有區別。
unsigned short dataMask[] = {0x0ffff, 0x07bef, 0x039e7, 0x018e3, 0x0861, 0x020, 0,0};
void test
{
_asm
{
xor ecx, ecx // ecx == 0
//...
// value in ecx may change
//...
mov bx, [dataMask + ecx * 2]
//...
};
}
「PIC代碼」?這就像「ATM機」或「PIN碼」?我期望從gcc bods中獲得更好的結果:-) – paxdiablo 2011-06-01 12:46:46
PIC代碼意味着與位置無關的代碼,它需要在任何地址空間中正確執行指令。代碼在圖書館,所以我很擔心這個警告... – Ryan 2011-06-01 12:53:55
@Ryan,我想你誤解了我的評論 - 'PIC'是'位置獨立代碼','PIC代碼',即'位置獨立代碼代碼「只是錯誤的,就像自動取款機或個人識別碼號碼一樣 - 爲我提供了一種奇怪的幽默感。 – paxdiablo 2011-06-01 13:10:59