embedded - 链接器和体系结构

标签 embedded linker

为什么我们有用于不同体系结构的链接器?链接器的服务是解析地址。那么它与目标体系结构的指令有何关系?

最佳答案

原因很多,我无法详尽列出所有这些原因。

  • 当体系结构不支持与位置无关的代码时,链接器需要做更多的工作。在这种情况下,甚至函数内的跳转也需要解决。
  • 链接器需要创建特定于体系结构的头,例如ELF或PE头。
  • 链接器需要在支持它们的平台上包括资源,数据分支或类似内容
  • 链接器需要实例化导出的C++模板
  • 链接器还需要处理尚无法解析的地址。这可以包括系统调用或动态加载的库。
  • 链接动态库时,链接器需要导出的内容不止单个入口函数。不同的体系结构使用不同的方法来指示要导出的功能
  • 如果在编译时无法确定实际的调用顺序,则链接器可能需要插入实际的调用顺序。例如。对于支持两个指令集的体系结构,只要调用者和被调用者使用的指令集不同,就需要插入“指令集开关”。
  • 链接器优化可以基于体系结构相关的详细信息。例如。如果4KB区域内的函数调用速度更快,则可以将调用者和被调用者放在一起。
  • 可以完成跨目标文件的内联,但是需要删除调用设置,被调用方序言,被调用方Epilog和返回值处理。这些是特定于体系结构的,因此仅认识到它们已经采用了特定于体系结构的链接器。
  • 关于embedded - 链接器和体系结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1679257/

    相关文章:

    linux - 在嵌入式设备上安装 ssh 服务器

    gcc - 链接器如何知道将哪些文件链接在一起?

    c++ - 为什么 ld 链接器允许使用相同的方法定义多个类?

    python - 链接到 Visual Studio 2005 中的 Python 导入库

    windows-8 - Visual Studio 2012 : Unresolved external symbol _BluetoothFindFirstRadio

    c - PIC16F18855 ADC 寄存器的行为不符合我的预期(C、CCS 编译器)

    C:返回通用寄存器

    sqlite - 嵌入式文件系统和sqlite

    python - 链接 numpy 扩展

    python - 如果库/API 不可用,则从硬件(例如闭路电视、RFID)检索数据