什么是可重定位的可执行文件以及为什么需要它

时间:2009-10-19 19:49:45

标签: multithreading memory-management embedded multitasking

可重定位可执行文件的用途是什么,它是如何生成的以及如何使用它?

进程内存映射重映射是什么意思?

如果有人可以向我解释嵌入式系统,它会很棒

提前谢谢 -Das

2 个答案:

答案 0 :(得分:2)

嵌入式系统可重定位映像需要的关键思想是:

  • 无论何处发生跳转或调用指令,都应将其编码为相对地址而不是绝对地址。例如,在x86中,jmp操作码可以是:
    • E9,即jmp rel32
    • EA,即jmp ptr32

您必须以这种方式编码的原因与嵌入式系统特别相关。相比之下,对于嵌入式系统,操作系统有一个图像加载器,它将可执行文件放在内存中并准备执行。图像加载器执行的部分准备工作涉及根据可执行文件在内存中的重定位来重写任何绝对地址。正是这种操作系统工具在可执行映像中产生了“重定位表”。如果没有操作系统工具来解析和操作这些表,则不会发生重定位。

在嵌入式系统设置中,通常的方法不是实现重新映射绝对地址的操作系统工具,而是完全避免使用绝对地址。

答案 1 :(得分:1)

  

可重定位可执行文件的用途是什么?

看看这里:Relocatable executable

  

如何使用?

取决于语言

  

进程内存映射重映射是什么意思?

请参阅本文档中的所有内容:Multitasking

一个建议,看一些书和谷歌。 ; - )