【发布时间】:2012-12-20 13:57:05
【问题描述】:
我一直在开发一个 32 位操作系统,并且刚刚实现了一个 ELF 加载器。我可以加载可执行文件,但是我想运行每个程序都有自己的数据段。现在从我在 32 位保护模式下的研究中收集到的数据段指的是 64k 块,对吗?所以假设我将 DS 设置为 16,并且有类似 mov dword eax,[test] 的代码。处理器得到测试中的内容,如 (DS * 0xFFFF) + 测试,对吗?因此,如果 test 为 0,那么它将读取的实际地址是 983025 还是 0xEFFF1?这是正确的还是我完全关闭了
【问题讨论】:
-
No 数据段不是 64Kbytes。在 32 位模式下,这些几乎已经过时了。
-
是的,我认为内存地址完全关闭了,我不知道我是否读过它,但它一定是其他架构。所以你说没有必要? CPU 怎么会计算出类似 char* ptr;ptr[0] = 2; 的东西?
标签: memory assembly x86 segments