Operating system 分段中的逻辑地址

Operating system 分段中的逻辑地址,operating-system,x86,Operating System,X86,《英特尔指南》称“逻辑地址由16位选择器和32位偏移量组成”。现在,如果在C中使用一个小程序: printf("The address of a=%x", &a); 输出为:0xbffa8343 上面的地址是32位,那么如何将其分为选择器(16位)和偏移量(32位)?在这种情况下,32位地址是与指南的32位偏移量。“16位选择器”通常不在C代码中,事实上,在汇编代码中通常是隐式的。(在许多现代操作系统中,除了对线程本地存储的内部访问之外,甚至不使用分段。在大多数情况下,会设置一个指向全

《英特尔指南》称“逻辑地址由16位选择器和32位偏移量组成”。现在,如果在C中使用一个小程序:

printf("The address of a=%x", &a);
输出为:0xbffa8343


上面的地址是32位,那么如何将其分为选择器(16位)和偏移量(32位)?

在这种情况下,32位地址是与指南的32位偏移量。“16位选择器”通常不在C代码中,事实上,在汇编代码中通常是隐式的。(在许多现代操作系统中,除了对线程本地存储的内部访问之外,甚至不使用分段。在大多数情况下,会设置一个指向全部4GB虚拟内存的默认分段。)

您可能会发现,在web上搜索有关分段寄存器的详细介绍以及如何使用分段功能非常有用。

谢谢,我还从以下网址获得了相关信息: