GCC m68k pc-relative

时间:2014-04-11 11:18:36

标签: c

我使用Microtek工具链生成可执行二进制文件,其中包含可重定位代码(pc-relative)和来自固定地址的数据(绝对数据)。今天,这个工具链不适用于Windows 7 64位。我们的想法是用GNU工具链(GCC 4.8.0)取代Microtek工具链68000。

但我在gcc编译器上找不到相同的选项:

Microtec编译器" MCC68K"有: " -Mcp":指示编译器对所有代码引用使用PC相对寻址。 " -Mda":指示编译器对所有数据引用使用绝对寻址。

Gcc(m68k-elf-gcc): -mpcrel

无法使用gcc可重定位代码构建,并且没有可重定位数据作为Microteck编译器。使用" -mpcrel",所有都是可重定位的(代码和数据)。

你知道吗?

抱歉我的英语不好。

感谢。

2 个答案:

答案 0 :(得分:1)

据我所知,GNU m68k工具链无法达到相同的效果。

  • -mpcrel将生成完全与位置无关的代码 对于代码和数据的pc相对地址,导致a 有限的程序/数据大小(pc相对偏移量不能超过16位)。
  • -fpic-fPIC将生成与位置无关的代码 可重定位的二进制文件,但需要一个执行就地重定位的特殊加载器

答案 1 :(得分:0)

来自gcc docs

  

-fpic生成适合在共享库中使用的与位置无关的代码(PIC),...

     

-fPIC如果目标机器支持,则发出与位置无关的代码,适用于动态链接并避免对大小进行任何限制   全局偏移表。

同时尝试search