c语言,或者是masm等,怎样给程序编译成绝对地址

来源:百度知道 编辑:UC知道 时间:2024/04/28 17:55:35
如题,就是编译成不依靠任何平台,不是任何平台的可执行文件格式,纯碎给程序一条一条编译成的变量和指令的二进制文件,就像是nasm编译所成的引导文件。
但是编写操作系统底层的时候,内核加载的时候也是可执行的代码,但是由于程序加载器还未加载,这时候还不可能解析可执行文件格式,所以这时候最根本的内核,是按物理地址,绝对加载到内存的固定位置上的,而操作系统都时用c写成的,或者是汇编,所以他们应该能编译成绝对地址

你所说的这种代码应该不是c语言编写,编译,链接,执行的模式了吧,应该就是直接写在一个flash或是什么地方直接供处理器运行的吧
这种模式用c应该是达不到的,最多你将编译后的代码进行修改,但应该也是汇编级的

可执行程序要靠操作系统装入才能运行,装入时,必定会给一个偏移量,所以编译器产生的程序不可能是绝对地址。

除非你回到原始的计算机,只有硬件,没有软件,从拨开关,加电开始,给机器码指令,一条条,一拍拍地做。