【发布时间】:2012-02-11 23:48:03
【问题描述】:
我想在汇编程序中使用 ES、FS 和 GS,以允许我拥有 3 个独立的地址空间。
是否有一个Win32 API,它将设置LDT并为我提供适当的选择器的值?
【问题讨论】:
-
我认为您将段与地址空间混淆了。即使您设法将段寄存器设置为指向不同段的不同选择器,这些段仍将驻留在同一虚拟地址空间中。你想达到什么目的?
-
“地址空间”是指单独的内存段。例如,MOV AX,ES:[BX] 会从与 MOV AX,GS:[BX] 不同的“空间”移动,因为 ES 和 GS 将包含不同的选择器。我想要完成的是将我的 16 位应用程序移植到 32 位应用程序,但我的 16 位应用程序使用 ES、FS 和 GS 来访问 3 个不同的 64K 内存区域。
标签: winapi assembly x86 cpu-registers memory-segmentation