Come fa un compilatore a conoscere il linguaggio macchina del processore di destinazione al quale il codice sorgente deve essere convertito?

4

Per esempio: due macchine hanno lo stesso compilatore e lo stesso sistema operativo. Ma le due macchine hanno processori diversi (diverse istruzioni di assemblaggio). Come il compilatore è stato scaricato rispetto al sistema operativo, come viene convertito il codice sorgente in linguaggio macchina di ciascun processore?

    
posta rahul8383 26.01.2017 - 08:45
fonte

2 risposte

13

In sostanza, attraverso le opzioni di configurazione.

Un compilatore che comprende più back-end di solito assume che il codice sorgente debba essere compilato sulla piattaforma (tipo os + processor) su cui è in esecuzione il compilatore stesso. Tutto il resto sarebbe cross-compiling e dovrebbe essere specificato tramite le opzioni della riga di comando o file di configurazione.

    
risposta data 26.01.2017 - 08:53
fonte
2

Usi diversi compilatori.

Il compilatore GCC per ARM è diverso dal GCC compilato per x86. Possono condividere la stessa fonte ma una volta compilati diventano due programmi diversi, diversi compilatori.

Hai diversi passaggi,

Ad esempio stai lavorando su un x86, puoi compilare il tuo compilatore per girare su x86, ma puoi anche compilarlo per eseguirlo su ARM.

E una volta che il compilatore è in esecuzione su ARM, puoi eseguirlo per generare programmi ARM, ma anche per generare programmi x86.

    
risposta data 26.01.2017 - 11:15
fonte

Leggi altre domande sui tag