5

Stavo solo pensando, come fa il codice binario dell'interprete delle macchine? Tutto quello che capisco è che il tuo codice viene convertito in 1 e 0, in modo che la macchina possa capirli, ma come fanno a farlo? È solo un testo normale alla traduzione binaria?Come le macchine interpretano il binario?

risposta

12

In primo luogo, "binario" non significa ciò che pensate significhi (qualsiasi dato sul computer, incluso il testo è già binario, solo il modo in cui decidiamo di visualizzare e gestire è diverso).

In secondo luogo, la compilazione non è una semplice trasformazione di caratteri divertenti (se lo fosse, non avremmo bisogno di compilatori diversi per lingue diverse). Per avere effettivamente una certa comprensione del codice macchina, è necessario comprendere l'architettura che si prefigge. Ci sono molte architetture di computer, il tuo PC è solo uno di questi. È un argomento molto vasto e richiede una solida comprensione dell'architettura dei computer da cogliere.

Mostrerò un esempio di istruzioni MIPS. Se sei interessato, puoi leggere e ottenere alcune conoscenze sull'argomento, prova i link alla fine del mio post.

MIPS è un argomento introduttivo molto popolare perché il suo formato di istruzioni è uno dei più digeribili. Le istruzioni MIPS sono ampie a 32 bit. Ci sono 3 tipi di istruzioni in MIPS: "R", "I" e "J". Daremo un'occhiata alle istruzioni "I".

Quando il processore riceve un'istruzione (32 bit di dati), lo legge e decide cosa fare con esso. "I" istruzioni simile a questa:

|------|-----|-----|----------------| 
opcode rs rt immediate 
    6  5  5  16    (the numbers show how wide are each part) 

Il significato di questi:

  • codice operativo racconta che tipo di istruzione di questo è (per esempio: addizione, sottrazione, moltiplicazione e molti altri). Tutte le istruzioni (compresi i tipi "R" e "J") iniziano con l'opcode a 6 bit, ed è così che il processore sa di che tipo si tratta.
  • rs e rt sono registri, una sorta di memoria nel processore che può contenere valori a 32 bit. MIPS ne ha 32 e sono identificati dal loro numero. Questo non è lo stesso della memoria, è all'interno della CPU stessa.
  • immediato è un numero. Si chiama così perché il numero è "proprio lì" nell'istruzione, non in un registro o memoria.

Un esempio concreto di aggiungere un immediato ad un numero memorizzato in un registro:

001000 00001 00010 0000000000000011 

In questo esempio, l'istruzione rotto in parti come sopra.Il significato dei valori è il seguente:

  • codice operativo: 001000 significa addi o "Aggiungi immediata".
  • rs: 00001 è 1 in decimale, quindi questa parte dell'istruzione dice il processore che vogliamo utilizzare registrare 1 come rs.
  • rd: 00010 è 2 in decimale, stessa idea come con rs.
  • immediato: 0000000000000011 è 3 in decimale.

L'istruzione addi funziona così: si prende il valore trovato nel rs e aggiunge il valore immediato ad esso. Dopo di che mette il risultato in rd. Quindi, quando l'istruzione è terminata, rd conterrà 3 + 2 = 5.

In breve, i compilatori analizzano il testo e generano istruzioni al processore di destinazione che fa la stessa cosa che intendevi fare con il tuo programma. Come puoi vedere, c'è un enorme divario tra la rappresentazione testuale del programma scritta da noi programmatori e il codice macchina eseguibile.

alcune risorse utili su MIPS e l'architettura del computer:

0

È un argomento enorme quello che stai chiedendo. Vorrei raccomandare l'eccellente libro The elements of computing systems per una panoramica su come i computer e i compilatori sono costruiti in linea di principio. È abbastanza facile da seguire e gli esercizi sono divertenti da fare. La maggior parte è disponibile online al link fornito.

This question ha anche alcuni buoni collegamenti sull'argomento.

0

Pensate a per di qua. Avete 8 interruttori di alimentazione che ciascun interruttore ha spento (0) o acceso (1). Il computer vedrà tutti e 8 gli interruttori come 1. È ora molto simile a un lucchetto a combinazione. Ogni simbolo sulla tastiera ha la combinazione.

Problemi correlati