В терминологии / документации 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.