GCC Int Dimensione: 64 bit vs. 32 Bit

November 2

processori per computer hanno aumentato in complessità e la capacità fin dalla loro invenzione, e programmatori di computer hanno dovuto progettare i loro strumenti di sviluppo intorno a questi cambiamenti. Con l'aumento della dimensione della memoria, come ad esempio nel passaggio da 32 bit per i processori a 64 bit, i vecchi compilatori e il codice sorgente devono essere aggiornati per sfruttare tutte le potenzialità di un processore. Parte di ciò dipende dalla maggiore spazio a disposizione per le variabili di precisione o numeri, ad esempio numeri interi. Il GNU Compiler Collection, o GCC, non fa eccezione. Anche se i programmatori possono modificare GCC per lavorare tra i sistemi a 32-bit e 64-bit, il processore in ultima analisi, determina che cosa dimensioni dei dati funzionano meglio nel codice sorgente.

Interi e Memoria

Durante la scrittura di codice per computer, si utilizzerà inevitabilmente uno dei manufatti necessari di programmazione: variabili. Una delle variabili principali disponibili in più ogni linguaggio di programmazione è il numero intero. Il numero intero - un numero intero decimale - rappresenta un'unità numerica basico in forma decimale. Tuttavia, dal momento che i computer non memorizzano valori numerici internamente come decimali, ma come numeri binari, variabili intere risiedono in locazioni di memoria come stringhe di cifre binarie. Queste stringhe binarie sono soggette ai vincoli di memoria del sistema e il numero di cifre binarie una posizione di memoria può contenere.

GCC e il processo di compilazione

Quando si compila un programma per un sistema Unix o Linux, probabilmente utilizzare il compilatore GNU, GCC. Il compilatore GCC prende il codice sorgente e compila in linguaggio assembly adatto per il processore host del sistema informatico. A seconda del processore e l'implementazione di GCC disponibile, il codice assembly può apparire diverso tra le macchine simili. Parte del processo di compilazione, tuttavia, comporta la gestione di tipi di dati nel codice sorgente all'interno della struttura del processore.

Processori a 32 e 64 bit

La progressione di dimensioni del registro processore ha seguito un percorso particolare relativa a rappresentazione numerica binaria. Un registro in un processore è una singola locazione di memoria all'interno del processore. Un computer è limitato in quanto la memoria può affrontare e la dimensione degli elementi di dati che può memorizzare. Un processore a 32 bit ha registri a 32 bit, il che significa che può immagazzinare oggetti lunghi fino a 2 ^ 32 bit. In termini decimali, un registro a 32 bit in grado di memorizzare un numero non negativo senza segno grande come 4,294,967,295. Registri con 64 bit espandono questo raddoppiando la quantità di cifre binarie disponibili per rappresentare i numeri.

GCC e Integer Size

In genere, i compilatori sono limitati dai processori su cui si compilano i loro programmi. Una versione di GCC compilazione di programmi in un processore a 32 bit potrebbe non necessariamente compilare un programma pronto per l'uso a 64 bit. Tuttavia, anche se un compilatore come GCC è limitato dal suo processore, è la combinazione di processore e compilatore che determina la dimensione di un numero intero in un particolare programma. Per default, in C e C ++ programmazione in un compilatore GCC, un intero lungo su un sistema a 32 bit è di 32 bit, mentre un intero lungo su un sistema a 64 bit è di 64 bit.