25

在浏览一些源代码时,我发现了一个 C 程序中的方法,它接受 WORD、DWORD 和 PWORD 类型的参数。我知道它们会转换为无符号数字,但为什么它们被称为 WORD?

4

3 回答 3

38

字长和数据类型

一个词是机器一次可以处理的数据量。这适合包含字符(通常为 8 位)和页面(许多单词,通常为 4 或 8KB)作为其他数据度量的文档类比。一个字是整数个字节,例如一、二、四或八。当有人谈论机器的“n 位”时,他们通常是在谈论机器的字长。例如,当人们说 Pentium 是 32 位芯片时,他们指的是它的字长,即 32 位或 4 个字节。

处理器的通用寄存器 (GPR) 的大小等于其字长。给定架构中组件的宽度,例如内存总线,通常至少与字长一样宽。通常,至少在 Linux 支持的体系结构中,内存地址空间等于字大小[2]。因此,指针的大小等于字的大小。此外,C 类型 long 的大小等于字长,而 int 类型的大小有时小于字长。例如,Alpha 具有 64 位字长。因此,寄存器、指针和 long 类型的长度为 64 位。然而,int 类型是 32 位长。Alpha 可以访问和操作 64 位,一次一个字。

进一步阅读: http: //www.makelinux.com/books/lkd2/ch19lev1sec2

于 2013-05-31T18:11:45.157 回答
3

WORD在 Windows API 中表示 2 个字节。

它最初用于指代指针大小(如在字长为 16 位的 CPU 中)。
Windows API 在typedefsWindows 3.1(仅支持 16 位机器)中(及之前)使用它,因此其含义不能再改变。

于 2013-05-31T18:10:35.193 回答
2

WORD可能来自一些较旧的代码,通常表示 16 位,而DWORD通常表示 32 位。如果你不确定你应该检查你的代码,因为它们必须在某个地方定义。

WORD源于机器字,其大小取决于硬件。

于 2013-05-31T18:12:06.983 回答