MASM V6.1程序员指南中段地址表述是否适用于32位Windows NT系统?
结论
你的判断不正确,MASM文档中「段部分始终为16位值」的表述完全适用于32位Windows NT系统。
具体说明
- 该表述描述的是x86架构硬件层面的固有规则:分段寻址的
segment:offset结构中,段部分对应的就是段选择子,它的长度固定为16位:高13位是段描述符在全局描述符表(GDT)或局部描述符表(LDT)中的索引,第2位是表指示位(标记使用GDT还是LDT),低2位是请求特权级(RPL),这一特性不受运行模式、操作系统类型的影响。 - 32位Windows NT采用平坦内存模型,操作系统在初始化阶段就将CS、DS、ES、SS等常用段寄存器的基地址设置为0、段限长设置为4GB,上层应用开发过程中几乎不需要主动修改段寄存器、也不需要显式使用
segment:offset形式的地址,这只是操作系统对底层硬件机制的封装,并没有改变段选择子本身是16位的硬件属性。
争议说明
你提到的两种对立观点本质是讨论角度的差异:如果站在普通上层应用开发的感知层面,32位Windows NT环境下分段机制几乎对开发者透明,确实不需要关注段部分的存在;但站在硬件架构、操作系统底层实现的层面,段部分始终为16位的表述完全成立。
内容的提问来源于stack exchange,提问作者João Afonso
相关产品推荐
相关产品推荐

