Сколько бит содержит WORD в 32/64 бит ОС соответственно?

У каждого есть определенный ответ?

Кто-то говорит, что на 32-битной ОС WORD означает 16 бит, правда?

Ответ 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-битной" ОС.

Ответ 2

Это не та ОС, которая устанавливает размер слова, но ваша машинная архитектура. 32-битная архитектура использует слово 32 бита.

Ответ 3

Одно слово - размер 16 бит DWord (двойное слово) - это двойной размер слова, который 32 бит при использовании в программировании, но...

Название Word в ОС - это число, показанное рядом с ОС, поэтому, если он говорит 64-битное слово (adres для хранилища), в этом случае будет 64 бит

Так что это зависит от того, с какого угла вы смотрите на него от программирования или номера ОС

Ответ 4

Нет однозначного ответа.

Традиционно термин "слово" относится к размеру регистров процессора и пути к основным данным. По этому определению "слово" будет 32-битным в вашей 32-битной системе и 64-битным в вашей 64-битной системе.

Однако, когда семейства процессоров были расширены для добавления более широких регистров/режимов работы, производители и пользователи этих процессоров иногда продолжали использовать "слово" для обозначения размера слова исходного процессора. То же самое может случиться, когда программное обеспечение портировано из одного семейства процессоров в другое.

В документации Intel x86 термин "слово" используется для обозначения 16-битной величины. Это использование переходит в программные среды, которые были изначально разработаны для x86, такие как Windows API и Паскаль в стиле Borland.

С другой стороны, в документации руки используется термин "слово" ² для обозначения 32-битной величины.

¹ см. Раздел 4.1 в https://software.intel.com/sites/default/files/managed/a4/60/253665-sdm-vol-1.pdf.

² см. Раздел A1.4 в https://static.docs.arm.com/ddi0487/db/DDI0487D_b_armv8_arm.pdf.