【问题标题】:What does F in FWORD stand for?FWORD中的F代表什么?
【发布时间】:2016-10-30 21:30:59
【问题描述】:

我正在学习汇编语言,我遇到了FWORD(6 个字节)。我很好奇F 代表什么? wiki 页面上没有任何内容,MSDN 上也没有任何内容。

https://en.wikipedia.org/wiki/FWord

https://msdn.microsoft.com/en-us/library/26c4cbza.aspx

【问题讨论】:

  • 代表FAR

标签: assembly x86 definition word low-level


【解决方案1】:

FWORD 中的字母“F”代表单词“far”,就像 32 位远指针一样,这是 FWORD 类型的主要用途。 32 位远指针在前 4 个字节中具有 32 位偏移量,在后 2 个字节中具有 16 位选择器。

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

【讨论】:

  • 非常感谢,现在我正在学习如何从实模式切换到保护模式,gdtr(全局描述符表寄存器)是 6 个字节。 lgdt fword ptr gdtr
  • @HrantCharchyan 在这种情况下,LGDT 指令的内存操作数是 6 个字节长,但它不是远指针。相反,它是低 2 个字节的 16 位限制和高 4 个字节的 32 位基数。
  • @HrantCharchyan 如果您使用 C 结构,请注意错位。在lgdt 操作数中,16 位长度在 32 位基数之前。如果您不小心,编译器将在长度后添加两个填充字节,以将基本字段对齐在 32 位边界上。使用一对“低”/“高”16 位值作为基数,或者告诉编译器该结构已打包。
  • @HrantCharchyan:更新了 Wiki 文章,引用此问答作为来源:)
【解决方案2】:

显然它似乎是“远字”。你可以在这个网站上找到它,第 12 节:

http://www.c-jump.com/CIS77/ASM/DataTypes/lecture.html

【讨论】:

    猜你喜欢
    • 2014-07-11
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多