当汇编程序在没有操作系统的机器上编译和运行时,如何选择 RAM 中的起始地址,以便正确分配用数据指令声明的变量?
最佳答案
如前所述,CPU 期望启动程序所在的地址通常是硬连线的。在某些非常特定的 CPU 等情况下,它可能是可编程的,但在 x86 的情况下,它是 FFFF0,或者 - 更准确地说 - FFFFFFF0,因此比 CPU 的最高物理地址低 16 个字节。主板通常将这些地址映射到 ROM,其中包含(很可能)跳转到 BIOS 代码,然后启动计算机。
当涉及到操作系统本身时,他们选择在哪里加载程序,然后他们进行实际加载,并将执行转移给它。例如,在 DOS 的情况下,简单的小应用程序(那些作为 COM 文件分发的应用程序)在地址 100 加载,然后命令提示符执行跳转到该地址,有效地开始执行在该地址加载的代码。对于使用虚拟内存的更先进的系统,问题当然更复杂。
关于assembly - 什么管理 RAM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9132371/