【发布时间】:2015-06-29 10:16:02
【问题描述】:
我正在阅读有关英特尔 8086 架构的信息,但无法弄清楚以下有关分段的内容:我知道段寄存器分别指向段并包含 64kb 长段的基地址。但是谁计算以及在哪一点设置段寄存器中的物理地址?另外,因为一个物理地址可以被多个段访问:偏移量对和段可以重叠,你怎么能确定你不会覆盖一些东西?我可以在哪里阅读更多相关信息?
【问题讨论】:
-
很抱歉,您的问题太模糊,不容易理解。首先,了解您正在使用什么环境(DOS/BIOS/...)以及您是否可以更精确会很有帮助。例如,当您问“谁计算以及在哪一点设置段寄存器中的物理地址?”时,您想知道什么。你想知道CPU的哪一部分从段和偏移地址计算物理地址?想知道 CPU 复位时段寄存器的值是多少?您想知道在您的代码执行时它们的值是多少吗?
-
我知道在我用 asm 编写代码后,它会被翻译成目标文件。现在我认为目标文件中的地址不是物理地址,因为它对我来说没有意义。段寄存器如何获得正确的物理地址?程序是如何加载到内存中的?你怎么知道代码段中的代码不会覆盖数据段中的某些内容等等(因为段可以重叠等)。我想我现在更清楚了。如果你有什么问题就问吧。谢谢。编辑:我想以某种方式解释整个过程,但我不知道在哪里阅读。
标签: x86-16 processor memory-segmentation