Ответ 1
Понятие "слово" имеет несколько значений. Там 3 значения, заложенные в вопросе.
- Общий термин "процессорное слово" в контексте архитектур ЦП
- "Размер бита" программного обеспечения/ОС против "размера бита" оборудования
- Термин
WORD
, обозначающий все заглавные буквы и означающий 16-битное значение. Это часть Windows "Win32" C языка API.
При описании определения типа Win32 WORD
также возникает следующее:
- Концепция набора команд Intel/AMD для слова, двойного слова и четырех слов
Общий термин "процессорное слово" в контексте архитектур ЦП
В общем/общем использовании "слово процессора" относится к размеру регистра процессора. Он также может относиться к размеру инструкции процессора или к размеру указателя (в зависимости от того, какая именно архитектура процессора). В простых случаях 32-битный процессор будет иметь 32-битный размер слова (и размер указателя). 64-битный процессор будет иметь 64-битный размер слова (и размер указателя).
Существует статья в Википедии об этой концепции "процессорного слова", в которой подробно описываются все общие применения этого термина и размеры для нескольких современных и исторических архитектур ЦП.
"Размер бита" программного обеспечения/ОС против "размера бита" оборудования
"64-битный" процессор и "64-битная" ОС необходимы для запуска "64-битного" программного обеспечения. Это, наверное, очевидно.
"64-разрядное программное обеспечение" использует 64-разрядные инструкции (например, сложение 64-разрядных чисел или одновременное копирование 64-разрядных данных из регистра процессора в ОЗУ). Он также может использовать 64-битный размер указателя. Это означает, что вместо того, чтобы использовать максимум 4 гигабайта оперативной памяти (например, "32-битное программное обеспечение"), теоретически он может использовать около 17 миллиардов гигабайт оперативной памяти (16 эксабайт).
64-разрядный процессор x64/x86 также может запускать 32-разрядное (или даже 16-разрядное) программное обеспечение. Это может сделать это без каких-либо изменений в коде и без необходимости перестраивать программное обеспечение. Это связано с тем, что все старые инструкции ЦП все еще существуют на новых ЦП и имеют обратную совместимость.
Эти понятия не совсем совпадают с общим понятием "слово процессора", но тесно связаны.
Примечание. Эта концепция начинает немного усложняться, когда вы говорите о старых и более специализированных процессорах (особенно о старых системах видеоигр), но на самом деле вопрос был не о них, поэтому я не буду вдаваться в подробности. О них обычно говорят как о "64-битных" или "8-битных" системах, но правда немного сложнее, чем это. Смотрите вики-статью "Процессорное слово", на которую я ссылался выше, или статью о конкретной системе.
Конкретный контекст вопроса - WORD
, заглавными буквами
Заглавные буквы и конкретные размеры в вопросе (16 бит для WORD
, в 32-битной ОС) подразумевают нечто иное, чем общий термин "процессорное слово".
В устаревшем программировании Windows (Win32 API) существует макрос, определяемый как WORD
, размер которого составляет 16 бит. Это имело смысл, когда процессоры были 16-битными. Однако даже если вы скомпилируете код, содержащий этот макрос, для 32-битной или 64-битной цели, он все равно будет 16-битным. DWORD
в Win32 API - это 32 бита, а QWORD
- 64 бита.
Это связано с тем, что Microsoft действительно старается в своем Win32 API поддерживать обратную совместимость, не внося никаких изменений в код. По большей части вы можете скомпилировать образцы Win32 из эпохи Windows 95 без изменений, и они будут работать точно так же и сегодня.
Microsoft, вероятно, унаследовала эту схему именования от документации Intel (и, возможно, AMD).
Концепция набора команд Intel/AMD "Слово", "Двойное слово" и т.д.
В документах Intel "Слово" (Win32 WORD
) составляет 16 бит. "Двойное слово" (Win32 DWORD
) составляет 32 бита. "Quadword" (Win32 QWORD
) составляет 64 бита. Имена соответствующих сборочных инструкций также отражают эту схему именования (например, инструкции PADD
Добавить упакованные целые числа" в PADD
: PADDW
, PADDD
, PADDQ
).
Некоторые примеры можно найти в этой статье в Википедии о наборе инструкций x86 или руководствах по разработке программного обеспечения Intel.
Эта схема именования не обязательно имеет смысл с точки зрения общей концепции "процессорного слова", поскольку эти концепции относятся только к части регистра. Однако они имеют смысл с точки зрения создания стабильного интерфейса программирования для программ x86. Это большая часть того, почему вы можете использовать "32-битные" (и 16-битные) программы поверх "64-битной" ОС.