FWORD中的F代表什么?

7

1
它代表FAR - Jester
2个回答

11

FWORD中的“F”代表“远(far)”,意思是32位远指针,这也是FWORD类型的主要用途。32位远指针在前4个字节中有一个32位偏移量,在最后2个字节中有一个16位选择器。

通常情况下,没有太多使用32位远指针的必要,因为大多数32位操作系统可以通过所有选择器访问整个32位4G地址空间。您可能会在低级操作系统代码中看到它们被用于切换代码段,因为CS选择器决定了代码执行的特权级别,以及代码是否以16位、32位或64位模式执行。


非常感谢,现在我正在学习如何从实模式切换到保护模式,gdtr(全局描述符表寄存器)为6个字节。 lgdt fword ptr gdtr - Hrant Charchyan
2
在这种情况下,LGDT指令的内存操作数长度为6个字节,但它不是一个far指针。相反,它是一个16位限制在低2字节和32位基址在高4字节。 - Ross Ridge
@HrantCharchyan 如果您使用C结构,请注意对齐问题。在“lgdt”操作数中,16位长度位于32位基址之前。如果不小心,编译器将在长度后添加两个填充字节,以使基址字段对齐到32位边界。要么使用一对“低”/“高” 16位值作为基址,要么告诉编译器该结构是紧凑的。 - doug65536
2
@HrantCharchyan:更新了维基文章,引用了这个问答作为参考 :) - Peter Cordes

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接