Estate atento ya que en esta crónica encontrarás el resultado que buscas.
Solución:
El concepto de “palabra” tiene varios significados. Hay 3 significados incrustados en la pregunta.
- El término genérico “palabra de procesador”, en el contexto de las arquitecturas de CPU.
- El “tamaño de bits” del software / sistema operativo, frente al “tamaño de bits” del hardware
- El término todo en mayúsculas
WORD
, es decir, un valor de 16 bits: esto es parte de la API de lenguaje C “Win32” de Windows
Al describir el Win32 WORD
definición de tipo, esto también aparece:
- El concepto de conjunto de instrucciones de Intel / AMD de “Word”, “Doubleword” y “Quadword”
El término genérico “palabra de procesador”, en el contexto de las arquitecturas de CPU.
En el uso común / genérico, una “palabra de procesador” se refiere al tamaño de un registro de procesador. También puede referirse al tamaño de la instrucción de la CPU o al tamaño de un puntero (dependiendo de qué arquitectura de CPU exacta). En casos simples, un procesador de 32 bits tendrá un tamaño de “palabra” de 32 bits (y un tamaño de puntero). Un procesador de 64 bits tendrá un tamaño de “palabra” de 64 bits (y un tamaño de puntero).
Hay un artículo de Wikipedia sobre este concepto de “palabra de procesador”, que detalla todos los usos genéricos del término y los tamaños de varias arquitecturas de CPU actuales e históricas.
“Tamaño de bits” del software / sistema operativo frente al “tamaño de bits” del hardware
Una CPU de “64 bits” y un sistema operativo de “64 bits” son necesarios para ejecutar el software de “64 bits”. Probablemente esto sea obvio.
El “software de 64 bits” utiliza instrucciones de 64 bits (por ejemplo, sumando números de 64 bits o copiando 64 bits de datos desde un registro de procesador a la RAM al mismo tiempo). También puede utilizar un tamaño de puntero de 64 bits. Esto significa que, en lugar de solo poder usar un máximo de 4 Gigabytes de RAM (como “software de 32 bits”), teóricamente puede usar alrededor de 17 mil millones de Gigabytes de RAM (16 Exabytes).
Una CPU x64 / x86 de “64 bits” también puede ejecutar software de “32 bits” (o incluso “16 bits”). Puede hacer esto sin ningún cambio en el código y sin tener que reconstruir el software. Esto se debe a que todas las instrucciones antiguas de la CPU todavía existen en las nuevas CPU y son compatibles con versiones anteriores.
Estos conceptos no son estrictamente los mismos que el concepto genérico de una “palabra procesadora”, pero están estrechamente relacionados.
Nota: Este concepto comienza a complicarse un poco más cuando se habla de procesadores más antiguos y más especializados (especialmente sistemas de videojuegos más antiguos), pero la pregunta no se trataba realmente de ellos, así que no entraré en detalles. Suele hablarse de ellos como sistemas de “64 bits” u “8 bits”, pero la verdad es un poco más complicada que eso. Vea el artículo de la wiki de “palabra de procesador” que vinculé anteriormente, o un artículo sobre el sistema específico en cuestión.
El contexto específico de la pregunta – WORD
, en mayúsculas
Las mayúsculas y los tamaños específicos de la pregunta (16 bits para WORD
, en un sistema operativo de 32 bits) implican algo diferente al término genérico “palabra de procesador”.
En la programación heredada de Windows (la API de Win32), hay una macro definido llamado WORD
, cuyo tamaño es de 16 bits. Esto tenía sentido cuando los procesadores eran de 16 bits. Sin embargo, incluso cuando compila código que contiene este macro para un destino de 32 bits o 64 bits, seguirá siendo de 16 bits. A DWORD
en la API de Win32 es de 32 bits, y un QWORD
es de 64 bits.
Esto se debe a que Microsoft realmente se esfuerza mucho en su API Win32 para admitir la compatibilidad con versiones anteriores sin tener que hacer ningún cambio en el código. En su mayor parte, puede compilar las muestras de Win32 de la era de Windows 95 sin cambios, y todavía funcionarán exactamente de la misma manera hoy.
Es muy probable que Microsoft haya heredado este esquema de nombres de la documentación de Intel (y posiblemente AMD).
El concepto de conjunto de instrucciones de Intel / AMD de “Word”, “Doubleword”, etc.
En los documentos de Intel, un “Word” (Win32 WORD
) es de 16 bits. Una “palabra doble” (Win32 DWORD
) es de 32 bits. Una “palabra cuádruple” (Win32 QWORD
) es de 64 bits. Los nombres de las instrucciones de ensamblaje relacionadas también reflejan este esquema de nomenclatura (por ejemplo, MMX Add Packed Integers PADD
instrucciones: PADDW
, PADDD
, PADDQ
).
Para ver algunos ejemplos, puede consultar este artículo de wikipedia sobre el conjunto de instrucciones x86 o los manuales de desarrollo de software de Intel.
Este esquema de nomenclatura no tiene necesariamente sentido en términos del concepto general de “palabra procesadora”, ya que estos conceptos solo se refieren a una parte de un registro. Sin embargo, tienen sentido en términos de crear una interfaz de programación estable para programas x86. Esta es una gran parte de la razón por la que puede utilizar programas de “32 bits” (y 16 bits) además de un sistema operativo de “64 bits”.
No hay una respuesta definitiva.
Tradicionalmente, el término “palabra” se refiere al tamaño de los registros del procesador y la ruta de datos principal. Según esa definición, una “palabra” sería de 32 bits en su sistema de 32 bits y de 64 bits en su sistema de 64 bits.
Sin embargo, cuando las familias de procesadores se ampliaron para agregar registros / modos operativos más amplios, los fabricantes y usuarios de esos procesadores a veces continuaron usando “palabra” para referirse al tamaño de palabra del procesador original. Lo mismo puede suceder cuando el software se transfiere de una familia de procesadores a otra.
La documentación de Intel x86 utiliza el término “palabra” ¹ para referirse a una cantidad de 16 bits. Este uso se transfiere a los entornos de software que se desarrollaron originalmente para x86, como la API de Windows y el pascal estilo Borland.
Por otro lado, la documentación del brazo utiliza el término “palabra” ² para referirse a una cantidad de 32 bits.
¹ consulte la sección 4.1 en https://software.intel.com/sites/default/files/managed/a4/60/253665-sdm-vol-1.pdf
² consulte la sección A1.4 en https: //static.docs.arm.com / ddi0487 / db / DDI0487D_b_armv8_arm.pdf
Si te apasiona la informática, puedes dejar una reseña acerca de qué le añadirías a este post.