Menu
CoddyTech

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 che aspetto ha effettivamente 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 numeri. L'indirizzo in cui si trovano i dati (come 1000) è un numero. Anche le istruzioni stesse (come mov, add, cmp) sono numeri.

Quando scrivi codice assembly come mov rax, 5, l'assembler converte questo testo leggibile dagli esseri umani 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 una memoria separata per le istruzioni. La stessa memoria contiene entrambi:

  • Dati (numeri, caratteri, array)
  • Istruzioni (il programma stesso)

I byte in sé non indicano se sono un'istruzione o un dato. La CPU considera come istruzione successiva ciò che si trova all'indirizzo di memoria contenuto nel Program Counter. Nei sistemi moderni, il sistema operativo contrassegna come eseguibile la memoria che contiene le istruzioni del programma e la CPU si rifiuta di eseguire byte provenienti da una memoria non contrassegnata in questo modo, come quella contenente i dati del programma. Hai appreso brevemente 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:

PassaggioCosa succede
1. FETCHLegge l’istruzione all’indirizzo in PC
2. EXECUTEEsegue quell’istruzione
3. ADVANCESposta 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.

Come si presenta un'istruzione:

Ogni istruzione ha due parti:

ParteCosa faEsempio
OpcodeCosa FAREmov, add, cmp
OperandiSu cosa eseguire l'operazionerax, 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.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground Assembly