У каждого есть определенный ответ?
Кто-то говорит, что на 32-битной ОС WORD означает 16 бит, правда?
У каждого есть определенный ответ?
Кто-то говорит, что на 32-битной ОС WORD означает 16 бит, правда?
Понятие "слово" имеет несколько значений. Там 3 значения, заложенные в вопросе.
WORD
, обозначающий все заглавные буквы и означающий 16-битное значение. Это часть Windows "Win32" C языка API. При описании определения типа Win32 WORD
также возникает следующее:
В общем/общем использовании "слово процессора" относится к размеру регистра процессора. Он также может относиться к размеру инструкции процессора или к размеру указателя (в зависимости от того, какая именно архитектура процессора). В простых случаях 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 "Слово" (Win32 WORD
) составляет 16 бит. "Двойное слово" (Win32 DWORD
) составляет 32 бита. "Quadword" (Win32 QWORD
) составляет 64 бита. Имена соответствующих сборочных инструкций также отражают эту схему именования (например, инструкции PADD
Добавить упакованные целые числа" в PADD
: PADDW
, PADDD
, PADDQ
).
Некоторые примеры можно найти в этой статье в Википедии о наборе инструкций x86 или руководствах по разработке программного обеспечения Intel.
Эта схема именования не обязательно имеет смысл с точки зрения общей концепции "процессорного слова", поскольку эти концепции относятся только к части регистра. Однако они имеют смысл с точки зрения создания стабильного интерфейса программирования для программ x86. Это большая часть того, почему вы можете использовать "32-битные" (и 16-битные) программы поверх "64-битной" ОС.
Это не та ОС, которая устанавливает размер слова, но ваша машинная архитектура. 32-битная архитектура использует слово 32 бита.
Одно слово - размер 16 бит DWord (двойное слово) - это двойной размер слова, который 32 бит при использовании в программировании, но...
Название Word в ОС - это число, показанное рядом с ОС, поэтому, если он говорит 64-битное слово (adres для хранилища), в этом случае будет 64 бит
Так что это зависит от того, с какого угла вы смотрите на него от программирования или номера ОС
Нет однозначного ответа.
Традиционно термин "слово" относится к размеру регистров процессора и пути к основным данным. По этому определению "слово" будет 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.