Come me, sembri essere curioso di sapere come funzionano i computer sotto il cofano. Non so abbastanza per rispondere bene alle tue domande (ed è comunque un argomento importante), ma consiglio vivamente la serie di podcast "Let's Design a Computer" di Steve Gibson. Ecco un estratto dalla trascrizione "Linguaggio della macchina", per darti un assaggio. . .
E tutti i metodi di salto sono, invece di aggiungerne uno al contatore del programma, ne aggiungiamo due, o ne aggiungiamo uno due volte, che è in realtà il modo in cui funzionavano allora queste macchine. E questo ci fa semplicemente saltare un salto. Quindi, in sostanza, questo significa che possiamo ramificarci ovunque desideriamo in memoria o continuare sulla nostra strada, il che ci dà, anche se è molto semplice, che ci dà abbastanza potere per consentire alle macchine di prendere decisioni. E abbiamo input/output; abbiamo matematica; abbiamo la possibilità di trasferire dati da una posizione in memoria a un'altra. Questi sono tutti gli elementi essenziali del funzionamento di una macchina. Questo è il linguaggio macchina.
Ora, l'unico strato di umanità che viene messo sopra è quello che viene chiamato "linguaggio assembly", che non è altro che nominare le cose. Ad esempio, si crea una specie di cosiddetto mnemonico per le diverse istruzioni. Quindi, ad esempio, caricare l'accumulatore sarebbe LDA. Conservare l'accumulatore, STA. Vuoi che siano corti perché li stai digitando molto. Ricorda che finisci con l'usare tante piccole istruzioni per fare qualcosa. E poi l'unica altra cosa che fa il linguaggio assembly, ti permette di nominare le posizioni nella memoria.
Quindi, ad esempio, si potrebbe dire LDA, per accumulatore di carico, punteggio corrente. E il punteggio corrente si riferirebbe semplicemente a, come una variabile essenzialmente, una posizione in memoria che avevi etichettato come "punteggio attuale". E poi se hai fatto STA, accumula accumulatore, nuovo punteggio, beh, per prima cosa carica il punteggio corrente nell'accumulatore e poi lo memorizza in una posizione diversa chiamata nuovo punteggio. Quindi questo è tutto ciò di cui stiamo parlando sono alcune semplici abbreviazioni per aiutare a ricordare e usare queste istruzioni individuali e le etichette convenienti per le posizioni nella memoria in modo che non sia necessario ricordare, oh, questo è in posizione 329627. Voglio dire, chi può farlo? Quindi, invece, solo tu etichetti quella posizione con un inglese, una frase alfanumerica di qualche tipo, e poi ti riferisci a quella posizione con la frase piuttosto che con il suo numero effettivo.
E infatti non ti interessa quale sia il numero. Questa è una delle cose che l'assemblatore farà per te è che dici che ho bisogno di memoria chiamato queste cose. E si preoccupa di dove vanno, perché non ha importanza per te, a patto che vengano costantemente citati. E questo è l'intero processo. Questo è il linguaggio della macchina e il linguaggio dell'assemblaggio. E così avvenne 50 anni fa, e più o meno così è ora.
. .ma fa ancora più indietro e inizia con transistor e porte logiche. Da quello che posso dire, ecco la serie completa (e il pubblico l'ascolto ha contribuito diagrammi utile nel wiki):
e 'valori binari con un significato solo per il processore specifico. Puoi rappresentarlo come esagono se lo desideri, o qualsiasi altra base che ti piace. Sembra "tuttavia" si sceglie di rappresentarlo. –
Non è assemblaggio, binario o esadecimale, è tutto :-) Sono solo rappresentazioni della stessa cosa. In definitiva assemblaggio ed esadecimale sono entrambi mappati in binario. Quel binario si adatta allo stato di un gruppo di transistor nella CPU. Quello stato potrebbe rappresentare un'istruzione da elaborare o potrebbe rappresentare i dati su cui lavorare. – Benj
Sono zero e uno, niente di più. Le istruzioni esadecimali e di assemblaggio sono per le persone, non per i computer. –