英特尔指南说“逻辑地址由16位选择器和32位偏移量组成”。现在如果在C中使用一个小程序:
printf("The address of a=%x", &a);
输出为:0xbffa8343
上面的地址是32位,那怎么能把它分成选择器(16位)和偏移量(32位)?
答案 0 :(得分:2)
本例中的32位地址 指南的32位偏移量。 “16位选择器”通常不在C代码之内,实际上通常在汇编代码中隐含。 (在许多现代操作系统中,除了内部访问线程本地存储之外,甚至不使用分段。在大多数情况下,设置一个默认段,指向完整的4GB虚拟内存。)
您可能会发现在网络上搜索细分寄存器以及今天如何使用细分方法很有用。