Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Programmazione >> Computer Programming Languages >> .

Perché il programma di linguaggio macchina scritto da un computer non verrà eseguito su un altro con CPU diversa?

Un programma di linguaggio macchina scritto per un computer non verrà eseguito su un altro con una CPU diversa perché il linguaggio della macchina è direttamente legato all'architettura specifica della CPU . Ciò significa che le istruzioni sono codificate in modo tale che solo quel particolare hardware della CPU possa comprendere ed eseguire. Le differenze rientrano in diverse aree chiave:

* Set di istruzioni Architecture (ISA): Questo è l'insieme fondamentale di istruzioni che una CPU comprende. CPU diverse (anche dallo stesso produttore) hanno ISA diversi. Ciò che è una semplice istruzione di addizione su una CPU potrebbe essere un'operazione in più fase complesse su un'altra, o potrebbe non esistere nemmeno. La codifica di queste istruzioni (i modelli di bit specifici che rappresentano ciascuna istruzione) varia selvaggiamente tra gli ISA.

* Numero di registri: Le CPU hanno registri interni per l'archiviazione dei dati temporanei. Il numero e le dimensioni di questi registri differiscono tra le CPU. Un programma scritto per utilizzare un numero e un tipo di registri specifici non funzionano su una CPU con una configurazione diversa.

* Modalità di indirizzamento della memoria: Il modo in cui la CPU accede alla memoria (ad es. Indirizzi diretti, indirizzi indiretti, ecc.) Varia tra le architetture. Il codice macchina riflette queste modalità di indirizzamento, rendendolo incompatibile con le CPU usando metodi diversi.

* Rappresentazioni di dati: Il modo in cui i tipi di dati (numeri interi, numeri a punta mobile, ecc.) Sono rappresentati in formato binario può differire. Un programma compilato per una rappresentazione dei dati di una CPU potrebbe produrre risultati errati o addirittura arresti crash su una CPU con una rappresentazione diversa.

* Chiamate di sistema: I programmi spesso interagiscono con il sistema operativo attraverso le chiamate di sistema. Il modo in cui vengono effettuate queste chiamate e i codici specifici utilizzati sono CPU e specifici del sistema operativo, aggiungendo un altro livello di incompatibilità.

In sostanza, il codice macchina è estremamente basso e strettamente accoppiato all'hardware fisico. Cercare di eseguire il codice macchina compilato per una CPU su una diversa è come provare a riprodurre un record destinato a un giradischi da 33⅓ giri / min su un giradischi da 45 giri / min:le velocità sono diverse e il risultato è incomprensibile. I linguaggi di livello superiore (come C ++, Java, Python) risolvono questo problema usando compilatori o interpreti per tradurre il codice in un modulo adatto all'architettura della CPU target.

 

Programmazione © www.354353.com