Come funzionano le istruzioni
Fa parte della sezione Fondamenti del percorso Assembly di Coddy. Lezione 4 di 45.
Sai che la CPU esegue le istruzioni una alla volta. Ma come fa la CPU a sapere quale istruzione eseguire dopo? Dove sono memorizzate le istruzioni? E com’è fatta un’istruzione?
Le istruzioni sono numeri.
Questa è una verità fondamentale sui computer. Tutto è un numero. I dati con cui lavori (come il numero 42) sono un numero. L'indirizzo in cui risiedono i dati (come 1000) è un numero. E anche le istruzioni stesse (come mov, add, cmp) sono numeri.
Quando scrivi codice assembly come mov rax, 5, l'assemblatore converte questo testo leggibile da una persona in un numero che la CPU comprende. Questo numero è chiamato codice istruzione.
Dove sono memorizzate le istruzioni?
Le istruzioni sono memorizzate in memoria, proprio come i dati. Non esiste un posto speciale per le istruzioni. La memoria contiene entrambi:
- Dati (numeri, caratteri, array)
- Istruzioni (il programma stesso)
La CPU non conosce la differenza. Legge semplicemente ciò che si trova all’indirizzo di memoria indicato dal Program Counter. Hai imparato brevemente a conoscere il PC nella lezione 0.1. Ora è il momento di capire esattamente come funziona.
Il contatore di programma (chiamato anche puntatore alle istruzioni) è un registro speciale all'interno della CPU. Il suo unico compito è contenere l'indirizzo di memoria della prossima istruzione da eseguire.
Il ciclo di recupero ed esecuzione:
La CPU ripete per sempre questi tre passaggi:
| Passaggio | Cosa succede |
|---|---|
| 1. FETCH | Legge l’istruzione all’indirizzo in PC |
| 2. EXECUTE | Esegue quell’istruzione |
| 3. ADVANCE | Sposta PC all’istruzione successiva |
Esempio semplice:
Se PC = 1000, la CPU:
- Recupera l'istruzione all'indirizzo 1000
- La esegue
- Sposta PC all'indirizzo successivo (1000 + dimensione dell'istruzione)
Poi si ripete con il nuovo valore di PC.
Com'è fatta un'istruzione:
Ogni istruzione ha due parti:
| Parte | Cosa fa | Esempio |
|---|---|---|
| Opcode | Cosa FARE | mov, add, cmp |
| Operandi | Su cosa farlo | rax, 5, [result] |
Alcune istruzioni hanno un operando (come inc rax per aggiungere 1). Alcune ne hanno due (come mov rax, 5). Alcune ne hanno tre (come add rax, rbx, rcx in alcune architetture).
Provalo tu
Questa lezione non include una sfida di codice.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
1La macchina
Che cos’è la CPUMemoriaRegistri vs memoriaCome funzionano le istruzioniSchema a due fileL’architettura x86-642Sistemi numerici
Perché il binario?Numeri binariDa decimale a binarioPerché l'esadecimale?Da esadecimale a decimaleDa decimale a esadecimaleASCII ed esadecimale5Chiamata di sistema di uscita
Cos'è una chiamata di sistema?Chiamata di sistema di uscita (60)Codici di uscitaRiepilogo: uscita correttaEsercitati da solo: Playground Assembly