operating-system - 什么决定了内存模型?

标签 operating-system computer-architecture

具体来说,这个问题是关于实模式下的平面和分段模型。我正在阅读一本关于汇编的书,其中提到在 DOS 上,COM 文件使用平面内存模型,而 EXE 文件使用分段内存模型。但是我不明白是什么告诉 DOS 使用哪种内存模型。我问这个问题是因为我正在阅读有关引导加载程序的信息。

最佳答案

COM 文件使用“平面内存模型”,因为当程序加载时,段寄存器全部由 DOS 设置为指向同一段,并且按照惯例,所有代码和指针都相对于段寄存器。

另一方面,EXE 文件格式允许以不同的偏移量加载段。 DOS 不会将段寄存器设置为默认值;这取决于代码本身。 16 位 EXE 代码要复杂得多,因为该代码必须管理段寄存器。

现在很多EXE代码或多或少又忽略了段寄存器;不需要将 32 位或 64 位寄存器添加到段寄存器来生成可用地址。

关于operating-system - 什么决定了内存模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9778425/

相关文章:

graphics - 为什么 VGA 颜色需要按位移位?

python - 如何在 python 中制作自定义 rand 函数

computer-architecture - gem5 缓存统计 - 重置和转储

c - 与缓存行对齐并了解缓存行大小

operating-system - x86 页表如何工作?

c - 子进程 pid() 是否被分配给父进程?

operating-system - 操作系统中的陷阱指令有什么作用?

java - java IO 中的缓冲区如何工作?

architecture - 流水线图,如果前一个 EX 使用相同的寄存器,ID 可以启动吗?

operating-system - 特权指令、陷阱和系统调用之间的关系