0

GCC 4.5.3-1.3;MIPS32

嗨,我正在尝试构建一个小于 32K 的小代码。我希望代码是位置无关代码(PIC),所以我可以加载到任何内存位置并运行。所以我在编译 C 文件时指定了 -fPIC。但是当我检查生成的反汇编代码时,我发现有

9fc01f24:   00000000    nop
9fc01f28:   0ff00445    jal 9fc01114 <_writeasm>
9fc01f2c:   24040076    li  a0,118
9fc01f30:   0ff00445    jal 9fc01114 <_writeasm>
9fc01f34:   24040065    li  a0,101
9fc01f38:   0ff00445    jal 9fc01114 <_writeasm>

指示。“jal”表示这些代码不是 PIC,PIC 不应该跳转到绝对地址。正确的?我期待 bal 0x 00001234。

我也尝试了-mshared -fPIC选项 and -mshared -fpic,但它们生成相同的二进制代码。我想知道为什么 -fPIC 不起作用?

有专家可以帮我吗?

提前致谢。

西安

4

0 回答 0