我对引导程序和系统软件并不陌生,但是我不知道一般程序为什么要从地址0x8000
开始运行。我已经知道在普通的C/C++程序中地址0x8000
被用作起始地址。
引导程序对于一般程序的最小大小是否需要占用0x8000
?或者引导程序应该分配到32KB的最小ROM块大小?或者有其他的原因吗?
我想从历史或逻辑的角度以及从虚拟地址的角度了解这个问题。
非常感谢你花时间来帮助回答这个问题。 为了更清晰地提出问题,这个问题与虚拟地址有关,而不是与物理地址有关。
从物理内存地址的角度,我基本上同意R的观点。
不说一个多样化的特定系统,例如Linux(即使在Android中),一般的RTOS(Nucleus和其他特别是ARM链接器部分)都使用地址0x8000作为一般程序的起始地址。如crt_begin.o、crt.o等位于0x0的文件存在于此区域,并由加载程序进行处理。
因此,我猜测,如果引导程序位于BootROM中进行启动(冷启动),则一般程序的引导程序的最小大小考虑到块大小应为32KB。
嗯,但我不确定……