Computer prosessorer har økt i kompleksitet og kapasitet siden oppfinnelsen sin , og programmerere har måttet utforme sine utviklingsverktøy rundt disse endringene . Som minne størrelsen øker , for eksempel i overgangen fra 32 -bit til 64 -bit prosessorer , må gamle kompilatorer og kildekode bli oppdatert for å dra nytte av en prosessor fulle potensial . En del av dette skyldes den økte plassen som er tilgjengelig for presisjon variabler eller tall , for eksempel heltall. GNU Compiler Collection, eller GCC , er intet unntak . Selv programmerere kan finpusse GCC til å arbeide mellom 32 -bit og 64 -bits systemer , dikterer prosessoren til slutt hva data størrelsene fungerer best i kildekoden. Heltall og Memory
Når du skriver programkode , vil du nødvendigvis bruke en av de nødvendige gjenstander av programmering : variabler. En av de viktigste variablene er tilgjengelige i de fleste hver programmeringsspråk er heltall. Den heltall - en hel desimaltall - representerer en grunnleggende numerisk enhet i desimal form . Men, siden datamaskiner ikke lagre numeriske verdier internt som desimaler , men som binære tall, heltallsvariabler bor i minneplasser som strenger av binære siffer . Disse binære strenger er underlagt begrensninger av systemets minne og til antall binære siffer et minneområde kan holde.
GCC og Compilation Process
Når kompilering et program for en Unix eller Linux-system , vil du sannsynligvis bruke GNU kompilatoren , GCC . GCC kompilatoren tar kildekoden og kompilerer den i assembly egnet for verten prosessor av datasystemet . Avhengig av prosessoren og gjennomføring av GCC tilgjengelig, kan assemblerkoden se forskjellig mellom lignende maskiner . En del av samlingen prosessen , men innebærer forvaltning av datatyper i kildekoden innenfor rammene av prosessoren arkitektur
32 - . Og 64 -bits prosessorer
progresjon av prosessor register størrelser har fulgt en bestemt bane knyttet til binær numerisk representasjon. 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 det kan lagre elementer opp til 2 ^ 32 bits lang. I desimal vilkår , kan en 32 -bit register lagre en usignert ikke- negativt tall så store som 4294967295 . Registre med 64 bits utvide dette ved å doble mengden av binære siffer tilgjengelig for å representere tall .
GCC og Integer Størrelse
Vanligvis er kompilatorer begrenset av prosessorene som de kompilere sine programmer . En versjon av GCC kompilere programmer på en 32 - bits prosessor kan ikke nødvendigvis kompilere et program klar for 64 -bits bruk. Men selv om en kompilator som GCC er begrenset av prosessoren , er den en kombinasjon av prosessoren og kompilator som bestemmer størrelsen av et helt tall i et bestemt program . Som standard i C og C + + programmering i et GCC kompilator, er en lang heltall på en 32 -bit system 32 bits, mens en lang heltall på en 64 -bit system er 64 bits .