Сколько бит содержит WORD в 32/64 битной ОС соответственно? - PullRequest
34 голосов
/ 14 марта 2011

У кого-нибудь есть определенный ответ?

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

Ответы [ 3 ]

45 голосов
/ 14 марта 2011

Понятие «слово» имеет несколько значений.В вопросе есть 3 значения:

  • Общий термин «слово процессора» в контексте архитектур ЦП
  • «Размер бита» программного обеспечения / ОС против «бита»size "of hardware
  • Термин« все заглавные »WORD, означающий 16-битное значение - это часть API языка Windows« Win32 »C

При описанииОпределение типа Win32 WORD, это также подходит:

  • Концепция набора команд Intel / AMD для "Word", "Doubleword" и "Quadword"

Общий термин «слово процессора» в контексте архитектур ЦП

В общем / общем использовании «слово процессора» относится к размеру регистра процессора.Он также может относиться к размеру инструкции процессора или к размеру указателя (в зависимости от того, какая именно архитектура процессора).В простых случаях 32-битный процессор будет иметь 32-битный размер слова (и размер указателя).64-разрядный процессор будет иметь 64-разрядный размер слова (и размер указателя).

В этой статье о «слове процессора» есть статья из 1023 *, в которой подробно описываются все общие виды использования.термина и размеров для нескольких текущих и исторических архитектур ЦП.

«Размер бита» программного обеспечения / ОС против «размера бита» аппаратного обеспечения

«64-разрядный» ЦП и«64-битная» ОС необходима для запуска «64-битной» программы.Это, вероятно, очевидно.

«64-разрядное программное обеспечение» использует 64-разрядные инструкции (например, сложение 64-разрядных чисел или одновременное копирование 64-разрядных данных из регистра процессора в ОЗУ).Он также может использовать 64-битный размер указателя.Это означает, что вместо того, чтобы использовать максимум 4 гигабайта оперативной памяти (например, «32-битное программное обеспечение»), теоретически он может использовать около 17 миллиардов гигабайт оперативной памяти (16 эксабайт).

A »64бит "x64 / x86 CPU" может также запускать программное обеспечение "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 бита. Названия соответствующих сборочных инструкций также отражают эту схему именования (например, MMX Добавить упакованные целые числа PADD инструкции: PADDW, PADDD, PADDQ).

В некоторых примерах вы можете проверить эту статью в Википедии о наборе команд x86 или руководств по разработке программного обеспечения Intel .

Эта схема именования не обязательно имеет смысл с точки зрения общей концепции «процессорного слова», поскольку эти концепции касаются только части регистра. Однако они имеют смысл с точки зрения создания стабильного интерфейса программирования для программ x86. Это большая часть того, почему вы можете использовать «32-битные» (и 16-битные) программы поверх «64-битных» ОС.

0 голосов
/ 15 июня 2019

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

Традиционно термин «слово» относится к размеру регистров процессора и пути к основным данным. По этому определению «слово» будет 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

0 голосов
/ 11 декабря 2015

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

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

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

...