Ce este tipul WORD în C? (Programare, C, Dword)

Nealon a intrebat.

Parcurgând niște cod sursă, am găsit o metodă într-un program C care primește argumente de tipurile WORD, DWORD și PWORD. Știu că acestea se traduc în numere fără semn, dar de ce sunt numite WORD?

Comentarii

  • Aș vrea doar să adaug că atunci când dezvolți pentru Windows atunci poți găsi definiția tipurilor în acest document MSDN. Vă rugăm să rețineți că un WORD nu mai este dimensiunea reală a unui cuvânt mașină pentru procesoarele recente, ci este păstrat la 16 biți pentru compatibilitate. –  > Por Dirk.
  • @Dirk De fapt, am găsit și eu acest lucru în codul sursă la scurt timp după ce am postat întrebarea. Era într-un fișier header numit WinDef.h. Conținea toate tipedef-urile pentru aceste tipuri. mulțumesc. –  > Por Nealon.
3 răspunsuri
Oscar

Dimensiunea cuvintelor și tipurile de date

Un cuvânt este cantitatea de date pe care o mașină o poate procesa la un moment dat. Acest lucru se încadrează în analogia cu documentul care include caracterele (de obicei opt biți) și paginile (multe cuvinte, adesea în valoare de 4 sau 8KB) ca alte măsuri de date. Un cuvânt este un număr întreg de octeți, de exemplu, unul, doi, patru sau opt. Când cineva vorbește despre „n biți” ai unei mașini, se referă în general la dimensiunea cuvântului mașinii. De exemplu, atunci când se spune că Pentium este un cip pe 32 de biți, se face referire la dimensiunea cuvântului, care este de 32 de biți sau patru octeți.

Dimensiunea registrelor de uz general (GPR) ale unui procesor este egală cu dimensiunea cuvântului. Lățimile componentelor dintr-o anumită arhitectură, de exemplu, magistrala de memorie, sunt de obicei cel puțin la fel de mari ca dimensiunea cuvântului. În mod obișnuit, cel puțin în arhitecturile pe care Linux le suportă, spațiul de adresare a memoriei este egal cu dimensiunea cuvântului[2]. În consecință, dimensiunea unui pointer este egală cu dimensiunea cuvântului. În plus, dimensiunea tipului C long este egală cu dimensiunea cuvântului, în timp ce dimensiunea tipului int este uneori mai mică decât cea a cuvântului. De exemplu, Alpha are o dimensiune a cuvântului de 64 de biți. În consecință, registrele, indicatorii și tipul long au o lungime de 64 de biți. Cu toate acestea, tipul int are o lungime de 32 de biți. Alpha poate accesa și manipula 64 de biți, câte un cuvânt la un moment dat.

Citiți în continuare : http://www.makelinux.com/books/lkd2/ch19lev1sec2

Comentarii

  • Se pare că în assembly, word este de obicei de 2 octeți. Și un alt lucru de mânuit din punctul meu de vedere este că, în GDB, pentru comanda x, w indică 4 octeți, iar h indică 2 octeți. Se pare că nu este unificat. –  > Por user218867.
SLaks

WORD în API-urile Windows înseamnă 2 octeți.

Inițial a fost folosit pentru a se referi la dimensiunea pointerului (ca într-un procesor cu o lungime a cuvântului de 16 biți).
API-urile Windows l-au utilizat în typedefs înapoi în (și înainte de) Windows 3.1 (care suporta doar mașini pe 16 biți), astfel încât semnificația nu se mai poate schimba.

Comentarii

  • în același mod în care long float este un termen mai vechi pentru double în c++? –  > Por Nealon.
  • @Nurgle În c++, pentru a tipări sau a căuta un dublu, se folosește „%lf”, care înseamnă long float. De ce se întâmplă asta dacă nu au legătură între ele? –  > Por Nealon.
  • Cred că prima ta frază este puțin înșelătoare. A cuvânt nu este definit ca 2 octeți, ci ca lățimea magistralei/registrului. WORD tip de pe Windows este pe 16 biți deoarece a fost dezvoltat inițial pentru mașini pe 16 biți. –  > Por Dirk.
Devolus

WORD provine probabil dintr-un cod mai vechi și de obicei însemna 16 biți, în timp ce DWORD înseamnă de obicei 32 de biți. Dacă nu sunteți sigur, ar trebui totuși să verificați codul dumneavoastră, deoarece acestea trebuie să fie definite undeva.

WORD provine de la cuvântul mașinii a cărui dimensiune depindea de hardware.

Tags:,