processori computer sono aumentate di complessità e capacità dalla loro invenzione , e programmatori di computer hanno dovuto progettare i loro strumenti di sviluppo attorno a questi cambiamenti. Con l'aumentare della dimensione della memoria, come ad esempio nel passaggio da 32 bit per processori a 64 bit , vecchi compilatori e codice sorgente devono essere aggiornati per sfruttare appieno il potenziale di un processore . Parte di questi risultati dal maggiore spazio a disposizione per le variabili di precisione o numeri , come i 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 determina in ultima analisi, ciò che le dimensioni dei dati funzionano meglio nel codice sorgente. Interi e Memoria
Quando si scrive codice per computer , è inevitabilmente utilizzare uno dei manufatti necessari di programmazione : variabili . Una delle variabili principali disponibili nella maggior parte ogni linguaggio di programmazione è il numero intero . Il numero intero - un numero intero decimale - rappresenta un'unità numerica di base in forma decimale . Tuttavia, dato che i computer non memorizzare i 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 della memoria del sistema e per il numero di cifre binarie di una locazione di memoria può contenere.
GCC e la compilazione di processo
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 lo 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 macchine simili . Parte del processo di compilazione, tuttavia , prevede la gestione dei tipi di dati nel codice sorgente all'interno della struttura di architettura del processore
32 - . Ed processori a 64 bit
< br >
La progressione del processore dimensioni registro abbia seguito un percorso particolare relative al binario di rappresentazione numerica . Un registro in un processore è una singola locazione di memoria all'interno del processore. Un computer è limitata in quanto la memoria può affrontare e la dimensione degli elementi di dati può memorizzare . Un processore a 32- bit ha registri a 32 bit , che significa che può memorizzare gli elementi fino a 2 ^ 32 bit di lunghezza . In termini decimali , un registro a 32 bit in grado di memorizzare un numero non negativo unsigned grande come 4.294.967.295. Registri di 64 bit espandere questa raddoppiando la quantità di cifre binarie disponibili per rappresentare i numeri .
GCC e Integer Dimensione
Tipicamente , i compilatori sono limitati dai processori su cui essi compila i propri programmi . Una versione dei programmi di compilazione GCC su 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 impostazione predefinita , in C e C + + 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 .