При переходе через некоторый исходный код я нашел метод в программе на C, который принимает аргументы типов WORD, DWORD и PWORD. Я знаю, что они переводят на неподписанные числа, но почему их называют WORD?Что такое тип WORD в C?
ответ
Размер слова и типы данных
Слово это количество данных, которое машина может обработать за один раз. Это соответствует аналогии документа, которая включает в себя символы (обычно восемь бит) и страницы (многие слова, часто 4 или 8 КБ), как другие измерения данных. Слово представляет собой целое число байтов, например, один, два, четыре или восемь. Когда кто-то говорит о «n-битах» машины, они обычно говорят о размере слова машины. Например, когда люди говорят, что Pentium представляет собой 32-битный чип, они относятся к его размеру слова, который составляет 32 бита или четыре байта.
Размер регистров общего назначения процессора (GPR) равен размеру его слова. Ширины компонентов в данной архитектуре, например, шина памяти, как правило, не меньше ширины слова. Как правило, по крайней мере в архитектурах, поддерживаемых Linux, адресное пространство памяти равно размеру слова [2]. Следовательно, размер указателя равен размеру слова. Кроме того, размер типа C long равен размеру слова, тогда как размер типа int иногда меньше размера слова. Например, Alpha имеет размер 64-битного слова. Следовательно, регистры, указатели и длинный тип имеют длину 64 бит. Однако тип int составляет 32 бита. Альфа может получать доступ и обрабатывать 64 бита, по одному слову за раз.
Далее читаем: http://www.makelinux.com/books/lkd2/ch19lev1sec2
Кажется, что в сборке слово «слово» обычно составляет 2 байта. И еще одна вещь из моего представления - в GDB, для команды 'x',' w' указывают 4 байта, а 'h' указывают 2 байта. Кажется, это не унифицировано. –
WORD
в Windows APIs означает 2 байта.
Первоначально он использовался для обозначения размера указателя (как в CPU с длиной слова 16 бит).
Windows API использовали его в typedefs
в (и до) Windows 3.1 (который поддерживал только 16-разрядные машины), поэтому значение больше не может измениться.
так же, как long float является более старым термином для удвоений в C++? – Nealon
@Nurgle В C++, чтобы распечатать или выполнить поиск двойника, вы используете «% lf», который обозначает длинные поплавки. Почему это так, если они не связаны? – Nealon
Я думаю, что ваше первое предложение немного вводит в заблуждение. Слово ** ** не определяется как 2 байта, а как ширина шины/регистра. Тип WORD в Windows - 16 бит, поскольку он был первоначально разработан для 16-разрядных машин. – Dirk
СЛОВО probalby от некоторых старых кода и, как правило, означало 16bits, в то время как DWORD обычно означает 32bits. Если вы не уверены, вы должны проверить свой код, потому что они должны быть определены где-то.
WORD основывается на машинном слове, размер которого зависит от оборудования.
- 1. C# Что такое тип System.Object [*]?
- 2. Что такое «короткий» тип данных в C?
- 3. Что такое целочисленный ссылочный тип в C#?
- 4. Что такое композитный тип в C?
- 5. Что такое возвращаемый тип конструктора в C++
- 6. Что такое тип возврата нового в C++?
- 7. Что такое sint32 тип
- 8. Что такое? тип?
- 9. Что такое «тип»?
- 10. Что такое тип тегов?
- 11. Что такое абстрактный тип?
- 12. Что такое тип?
- 13. Что такое тип?
- 14. Что такое тип возврата «()»?
- 15. Что такое тип данных?
- 16. Что такое универсальный тип?
- 17. Что такое тип орда?
- 18. Что такое тип SOCKET?
- 19. Что такое тип Vec3b?
- 20. Что такое тип сокета?
- 21. Что такое тип записи?
- 22. Что такое MIME-тип
- 23. Что такое "[тип объекта]"
- 24. Что такое динамический тип
- 25. Что такое стереофонический тип
- 26. Что такое эквивалентный тип C# для символьной точки в C
- 27. Что такое тип этих выражений?
- 28. Что такое bogus_type в C
- 29. Что такое '??' означает в C#?
- 30. Что такое "-1L" в C?
Я хотел бы добавить, что при разработке для Windows вы можете найти определение типов [в этом документе MSDN] (http://msdn.microsoft.com/en-us/library/windows/desktop /aa383751(v=vs.85).aspx). Обратите внимание, что 'WORD' больше не является фактическим размером машинного слова для последних процессоров, но для совместимости поддерживается 16 бит. – Dirk
@Dirk Я действительно нашел это самостоятельно в исходном коде вскоре после размещения вопроса. Он был в файле заголовка под названием WinDef.h. Содержит все типы typedef для этих типов. Спасибо. – Nealon