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 不起作用?
有专家可以帮我吗?
提前致谢。
西安