GCC Int Størrelse: 64 Bit Vs. 32 Bit

Datamaskin prosessorer har økt i kompleksitet og kapasitet siden sin oppfinnelse, og programmerere har hatt til å utforme sine utviklingsverktøy rundt disse endringene. Som minnestørrelsen øker, for eksempel i overgangen fra 32-bit til 64-bits prosessorer, må gamle kompilatorer og kildekode bli oppdatert for å dra nytte av en prosessor fulle potensial. En del av dette er et resultat av den økte plass som er tilgjengelig for presisjons variabler eller tall, slik som heltall. GNU Compiler Collection, eller GCC, er intet unntak. Selv programmerere kan justere GCC å jobbe mellom 32-bits og 64-bits systemer, prosessoren til slutt bestemmer hva datastørrelser fungerer best i kildekoden.

Heltall og Minne

Når du skriver datakode, vil du nødvendigvis bruke en av de nødvendige gjenstander av programmering: variabler. En av de viktigste variablene som er tilgjengelige i de fleste hver programmeringsspråk er heltall. Heltallet - en hel desimaltall - representerer en grunnleggende tall enhet i desimal form. Men siden datamaskiner ikke lagre numeriske verdier internt som desimaler men som binære tall, heltallsvariabler bor i minneplasseringer som strenger av binære tall. Disse binære strenger er underlagt begrensninger av systemets minne og til antall binære siffer en minneplassering kan holde.

GCC og Compilation Process

Når kompilere et program for en Unix eller Linux-system, vil du sannsynligvis bruke GNU kompilatoren, GCC. GCC-kompilatoren tar kildekoden og kompilerer den inn assembly egnet for verten prosessor av datasystemet. Avhengig av prosessoren og gjennomføring av GCC tilgjengelig, kan assemblerkoden se forskjellig mellom liknende maskiner. En del av innsamlingsprosessen, men innebærer styring av datatyper i kildekoden i strukturen av den prosessorarkitekturen.

32- og 64-bits prosessorer

Progresjonen prosessorregisterstørrelser har fulgt en bestemt bane knyttet til binære tallrepresentasjon. Et register i en prosessor er en enkelt minneområde inne i prosessoren. En datamaskin er begrenset i hvor mye minne den kan adressere og størrelsen på dataelementene det kan lagre. En 32-bits prosessor har 32-bits registre, noe som betyr at den kan lagre elementer opp til 2 ^ 32 bits lang. I desimaltall vilkår, kan en 32-bits register lagre en usignert ikke-negativt tall så store som 4294967295. Registre med 64 bits utvide dette ved å doble mengden av binære tall tilgjengelig til å representere tall.

GCC og Integer Size

Vanligvis er kompilatorer begrenset av prosessorene som de kompilere sine programmer. En versjon av GCC kompilere programmer på en 32-bits prosessor kanskje ikke nødvendigvis kompilere et program klar for 64-bit bruk. Imidlertid, selv om en kompilator som GCC er begrenset av sin prosessor, er det kombinasjonen av prosessoren og kompilator som avgjør størrelsen av et helt tall i et bestemt program. Som standard i C og C ++ programmering i en GCC kompilator, en lang heltall på en 32-bit system er 32 bits, mens en lang heltall på en 64-bit system er 64 biter.