Каков размер QWORD на 64-битной машине? - PullRequest
0 голосов
/ 30 марта 2019

Я сейчас ищу ответ на вышеуказанный вопрос.До сих пор я обнаружил, что люди говорят, что размер слова относится к размеру регистра процессора, что позволяет предположить, что на 64-битной машине размер слова равен 64 битам, и, следовательно, QWORD (4 * слово) имеет размер 256 битов.

Но, с другой стороны, я обнаружил источники, такие как this , в которых говорится, что размер будет 128 бит (64 бита для 32-битных и удвоенный для 64-битных), тогда как другие даже предлагаютразмер будет 64 бита.Но последнее как-то связано с тем, что Microsoft усугубляет ситуацию, путая всех с определением размера слова в 16 бит.

Может быть, кто-то может разрешить мою путаницу и просветить меня в этой теме.

1 Ответ

3 голосов
/ 30 марта 2019

В терминологии / документации x86 «слово» равно 16 битам , потому что x86 эволюционировал из 16-битного 8086. Изменение значения термина по мере добавления расширений было бы просто запутанным, потому что Intel по-прежнему приходилось документировать 16-битный режим и все, и мнемоника инструкций, такая как cwd (знак-расширение слова до слова), запекла терминологию в ISA.

  • x86 слово = 2 байта
  • x86 dword = 4 байта (двойное слово)
  • x86 qword = 8 байтов (четверное слово)

Большинство других 64-разрядных ISA развились из 32-разрядных ISA (AArch64, MIPS64, PowerPC64 и т. Д.) Или были 64-разрядными с самого начала (Alpha), так " слово "означает 32 бита в этом контексте.

  • 32-битное слово = 4 байта
  • dword = 8 байт (двойное слово), например MIPS daddu - 64-разрядное целое число add
  • qword = 16 байтов (четверное слово), если поддерживается вообще.

«Слово» не означает 64 бита на любой 64-битной машине, о которой я слышал. Даже DEC Alpha AXP, который изначально разрабатывался как агрессивно 64-битный, использует 32-битные слова инструкций. IIRC, руководство называет слово 32-битными битами.

Будучи способным загружать 64-битные данные в регистр целых чисел с помощью одной инструкции, это не означает, что «размер слова». Битность и размер слова не имеют конкретных технических значений ; большинство процессоров имеют несколько различных размеров внутри. (например, 64 байт шин между кешем L2 и L1d в Intel начиная с Haswell вместе с 32-байтовой загрузкой / хранением SIMD.)

Так что, в основном, авторы документации производителя CPU должны выбрать, что "слово" (и, следовательно, dword / qword) означают для их ISA.


Забавный факт: SPARC64 говорит о «коротком слове» (32 бита) и «длинном слове» (64 бита), а не о слове / двойном слове. Я не знаю, имеет ли значение «слово» без какого-либо спецификатора какое-либо значение в 64-битной документации SPARC.

...