开发者

GCC warning: non-pic addressing form not suitible for pic code

开发者 https://www.devze.com 2023-03-10 03:40 出处:网络
The following code compiles fine in MSVC, but GCC gives a warning, which really bugs me: non-pic addressing form not suitible for pic code.

The following code compiles fine in MSVC, but GCC gives a warning, which really bugs me: non-pic addressing form not suitible for pic code.

Can you please tell me the cause of this warning and how to fix it if it really is a potential problem? I am using -fasm-blocks compiler option to enable intel style assembly, adding -fpic argument makes no difference.

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]
        //...
 开发者_如何转开发   };
}


GCC is trying to tell you that [dataMask + ecx * 2] isn't a valid addressing mode. This is due to the PIC's nature: it is a RISC, and you're writing RISC code with CISC syntax, not a good idea IMO. Basically, the x86 has a way more complete (and complicated) instruction set, while the PIC's one isn't so extended. I'm quite tired right now, but I hope I was clear ;)

0

精彩评论

暂无评论...
验证码 换一张
取 消