Codice macchina

Il codice macchina è un programma per computer scritto in linguaggio macchina. Usa il set di istruzioni di una particolare architettura di computer. Di solito è scritto in binario. Il codice macchina è il livello più basso del software. Altri linguaggi di programmazione sono tradotti in codice macchina in modo che il computer possa eseguirli.

Un'istruzione dice al processo quale operazione eseguire. Ogni istruzione è composta da un opcode (codice dell'operazione) e da uno o più operandi. Gli operandi sono solitamente indirizzi di memoria o dati. Un set di istruzioni è una lista degli opcode disponibili per un computer. Il codice macchina è ciò che il codice assembly e altri linguaggi di programmazione sono compilati o interpretati.

I costruttori di programmi trasformano il codice in un altro linguaggio o codice macchina. Il codice macchina è talvolta chiamato codice nativo. Si usa quando si parla di cose che funzionano solo su alcuni computer.

Scrivere codice macchina

Il codice macchina può essere scritto in diverse forme:

  • Utilizzando un certo numero di interruttori. Questo genera una sequenza di 1 e 0. Questo era usato nei primi giorni dell'informatica. Dagli anni '70, non è più utilizzato.
  • Utilizzando un editorHex. Questo permette di usare gli opcodes invece del numero del comando.
  • Usare un assemblatore. I linguaggi assembly sono più semplici degli opcodes. La loro sintassi è più facile da capire del linguaggio macchina ma più difficile dei linguaggi di alto livello. L'assemblatore tradurrà il codice sorgente in codice macchina da solo.
  • L'uso di un linguaggio di programmazione di alto livello permette ai programmi di usare un codice più facile da leggere e scrivere. Questi programmi sono tradotti in codice macchina. La traduzione può avvenire in molti passi. I programmi Java sono prima ottimizzati in bytecode. Poi viene tradotto in linguaggio macchina quando viene usato.
Pannello frontale di un primo minicomputer, con interruttori per inserire il codice macchinaZoom
Pannello frontale di un primo minicomputer, con interruttori per inserire il codice macchina

Istruzioni tipiche del codice macchina

Ci sono molti tipi di istruzioni che si trovano di solito in un set di istruzioni:

  • Operazioni aritmetiche: Addizione, sottrazione, moltiplicazione, divisione.
  • Operazioni logiche: Congiunzione, disgiunzione, negazione.
  • Operazioni che agiscono su singoli bit: Spostamento di bit a sinistra o a destra.
  • Operazioni che agiscono sulla memoria: copiare un valore da un registro a un altro.
  • Operazioni che confrontano due valori: maggiore di, minore di, uguale.
  • Operazioni che combinano altre operazioni: aggiungere, confrontare e copiare se è uguale a qualche valore (come una sola operazione), saltare a qualche punto del programma se un registro è zero.
  • Operazioni che agiscono sul flusso del programma: saltare a qualche indirizzo.
  • Operazioni che convertono tipi di dati: ad esempio, convertire un intero a 32 bit in un intero a 64 bit, convertire un valore in virgola mobile in un intero (troncando).

Molti processori moderni usano il microcodice per alcuni comandi. I comandi più complessi tendono ad usarlo. Questo viene fatto spesso con le architetture CISC.

Istruzioni

Ogni processore o famiglia di processori ha il suo set di istruzioni. Le istruzioni sono schemi di bit che corrispondono a diversi comandi che possono essere dati alla macchina. Così, il set di istruzioni è specifico per una classe di processori che utilizzano (per lo più) la stessa architettura.

I progetti di processori più recenti spesso includono tutte le istruzioni di un predecessore e possono aggiungere ulteriori istruzioni. A volte, un design più recente interrompe o altera il significato di un codice di istruzione (tipicamente perché è necessario per nuovi scopi), influenzando la compatibilità del codice; anche processori quasi completamente compatibili possono mostrare un comportamento leggermente diverso per alcune istruzioni, ma questo è raramente un problema.

I sistemi possono anche differire in altri dettagli, come la disposizione della memoria, i sistemi operativi o i dispositivi periferici. Poiché un programma normalmente si basa su tali fattori, sistemi diversi non eseguiranno tipicamente lo stesso codice macchina, anche quando viene usato lo stesso tipo di processore.

La maggior parte delle istruzioni ha uno o più campi opcode. Essi specificano il tipo di istruzione di base. Altri campi possono dare il tipo di operandi, la modalità di indirizzamento, e così via. Ci possono anche essere istruzioni speciali che sono contenute nell'opcode stesso. Queste istruzioni sono chiamate immediate.

I design dei processori possono essere diversi in altri modi. Istruzioni diverse possono avere lunghezze diverse. Inoltre, possono avere la stessa lunghezza. Avere tutte le istruzioni della stessa lunghezza può semplificare il progetto.

Esempio

L'architettura MIPS ha istruzioni che sono lunghe 32 bit. Questa sezione contiene esempi di codice. Il tipo generale di istruzione è nel campo op (operazione). Sono i 6 bit più alti. Le istruzioni di tipo J (salto) e di tipo I (immediato) sono completamente date da op. Le istruzioni di tipo R (registro) includono il campo funct. Esso determina l'esatta operazione del codice. I campi utilizzati in questi tipi sono:

    6       5      5          5 5       6 bit [ op | rs | rt | rd |shamt| funct] R-type [ op | rs | rt | address/immediate] I-type [ op |         target address         ] J-type

rs, rt, e rd indicano gli operandi del registro. shamt dà una quantità di shift. I campi indirizzo o immediato contengono direttamente un operando.

Esempio: sommare i registri 1 e 2. Mettere il risultato nel registro 6. È codificato:

[ op | rs | rt | rd |shamt| funct]      0      1      2      6      0      32      decimale 000000 00001 00010 00110 00000 100000    binario

Caricare un valore nel registro 8. Prendetelo dalla cella di memoria 68 celle dopo la posizione indicata nel registro 3:

[ op | rs | rt | indirizzo/immediato]     35      3      8            68            decimale 100011 00011 01000 00000 00001 000100    binario

Salta all'indirizzo 1024:

[ op | indirizzo di         destinazione         ]      2                  1024                decimale 000010 00000 00000 00000 10000 000000    binario

Pagine correlate

  • Sistema numerico binario
  • Computer quantistici
  • Set di istruzioni
  • Computer con set di istruzioni ridotto

Domande e risposte

D: Cos'è il codice macchina?


R: Il codice macchina è un programma informatico scritto in linguaggio macchina, che utilizza il set di istruzioni di una particolare architettura di computer e di solito è scritto in binario.

D: Qual è il livello più basso del software?


R: Il codice macchina è il livello più basso del software.

D: Come vengono eseguiti dai computer gli altri linguaggi di programmazione?


R: Altri linguaggi di programmazione vengono tradotti in codice macchina, che il computer può eseguire.

D: In cosa consiste un'istruzione nel codice macchina?


R: Un'istruzione nel codice macchina è composta da un opcode (codice di operazione) e da uno o più operandi. Gli operandi sono solitamente indirizzi di memoria o dati.

D: Che cos'è un set di istruzioni?


R: Un set di istruzioni è un elenco di codici operativi disponibili per un computer.

D: Cosa fanno i costruttori di programmi con il codice?


R: I programmatori trasformano il codice in un altro linguaggio o codice macchina.

D: Qual è un altro nome per il codice macchina?


R: Il codice macchina è talvolta chiamato codice nativo, utilizzato quando si parla di cose che funzionano solo su alcuni computer.

AlegsaOnline.com - 2020 / 2023 - License CC3