假设我有两个可执行文件需要在同一个地址空间中加载到不同的地址。我想保留两个可执行文件作为单独的文件,但允许从另一个文件调用函数。链接单独的二进制文件
例如,如果可执行A,其具有位于0x1000被加载,含有0x1ABC和可执行B,在为0x2000加载的函数void foo()
,来电foo()
,我希望这样的最终成为call 0x1ABC
可执行B.
我需要这个的原因是玩具操作系统。我需要我的引导程序来知道我的中断处理程序的位置以及内核代码的启动位置。我可能能够将整个事物压缩成一个文件,但我宁愿不要。
目前我通过在“nice”地址处手动加载所需功能并手动将跳转写入它们来解决问题。它有效,但是,针头说,这是不理想的。