假设我有两个可执行文件需要加载到不同地址的相同地址空间中。我想将这两个可执行文件保存为单独的文件,但允许一个调用另一个函数。
例如,如果必须在 0x1000 加载的可执行文件 Avoid foo()
在 0x1ABC 包含一个函数,而在 0x2000 加载的可执行文件 B 调用foo()
,我希望它以call 0x1ABC
可执行文件 B的形式结束。
我需要这个的原因是为了玩具操作系统。我需要我的引导加载程序知道我的中断处理程序在哪里以及内核代码从哪里开始。我也许可以将整个内容压缩到一个文件中,但我宁愿不这样做。
目前,我通过在“好”地址手动加载所需功能并手动将跳转写入它们来解决问题。它有效,但是,不用说,它不是最理想的。