... che un determinato programma dice alla CPU di recuperare le informazioni da un indirizzo specifico e il programma definisce come trattarlo.
Esattamente. Ma la RAM non viene letta "sequenzialmente", e sta per Random Access Memory, che è esattamente l'opposto.
Oltre a conoscere ciò che un byte è , non si sa nemmeno se si tratta di un byte , o di un frammento di un oggetto grande come un numero in virgola mobile.
Vorrei aggiungere altre risposte fornendo alcuni esempi specifici.
Considerare 01000001
. Il programma potrebbe copiarlo da un luogo a un altro come parte di un grande pacchetto di dati senza alcun riguardo al suo significato. Ma copiarlo nell'indirizzo utilizzato dal buffer video in modalità testo farà A
apparire la lettera in una posizione sullo schermo. La stessa identica azione quando la scheda è in modalità grafica CGA visualizzerà un pixel rosso e un pixel blu.
In un registro, potrebbe essere il numero 65 come numero intero. Fare l'aritmetica per impostare il bit dei 32 potrebbe significare qualsiasi cosa senza contesto, ma potrebbe in particolare cambiare una lettera in minuscolo.
La CPU 8086 (ancora) ha istruzioni speciali chiamate DAA ※ che vengono utilizzate quando il registro contiene 2 cifre decimali, quindi se hai appena usato quell'istruzione la stai interpretando come due cifre 41
.
I programmi si arrestano in modo anomalo perché viene letta una parola di memoria pensando che sia un puntatore quando in caso contrario è stato memorizzato qualcosa.
Utilizzando un debugger, ispezionando la memoria, viene utilizzata una mappa per guidare l'interpretazione per la visualizzazione. Senza queste informazioni sui simboli, un debugger di basso livello ti consente di specificare: mostra questo indirizzo come parole a 16 bit, mostra questo indirizzo come punto mobile lungo, come stringhe ... qualunque cosa. Guardando un dump di pacchetti di rete o un formato di file sconosciuto, scervellarlo è una sfida.
Questa è una delle principali fonti di energia e flessibilità nella moderna architettura informatica: una cella di memoria può significare qualsiasi cosa , dati o istruzione, impliciti solo in ciò che "significa" per il programma da ciò che fa con il valore e in che modo influisce sulle operazioni successive. il significato è più profondo della larghezza intera: questi caratteri sono ... caratteri in ascii o ebcdic? Formare parole in inglese o codici prodotto SQU? L'indirizzo da inviare o l'indirizzo di ritorno da cui proviene? L'interpretazione di livello più basso (bit logici; di tipo intero, con segno o senza segno; float; bcd; puntatore) è contestuale al livello di set di istruzioni, ma vedi che è tutto contesto a un certo livello: il tol'indirizzo è quello che è a causa della posizione è stampato sulla busta. È contestuale alle regole del postino, non della CPU. Il contesto è un grande continuum, con bit su un'estremità.
※ Nota a piè di pagina: l'istruzione DAA è codificata come byte 00100111
. Quindi quel byte è l'istruzione aforenamed se letto nel flusso di istruzioni e le cifre 27
se interpretate come cifre bcd e 0x27 = 39 come numero intero, che è il numero 9 in ASCII e parte della tabella degli interrupt (metà di INT 13 Indirizzo a 2 byte, utilizzato per le routine di servizio BIOS).