Registri principali della CPU e loro ruolo CPU e linguaggio macchina domande ed esercizi PC: indirizzo prossima IR: corrente MAR: indirizzo cella di M da leggere/scrivere MBR: contenuto cella di M letta o da scrivere Registri generici per dati 1 2 Prelievo di un PC MAR M[MAR] MBR (Lettura) MBR IR Incr(PC) Istruzioni macchina Campi principali Codice operativo Campi operandi Dove possono essere gli operandi? o registri CPU o moduli I/O 3 4 Traduzione da linguaggio ad alto livello a linguaggio macchina X X - Y Cosa sono X e Y? Istruzioni del linguaggio macchina: 1. Carica in un registro il contenuto della cella X (LOAD) 2. Carica in un altro registro il contenuto della cella Y (LOAD) 3. Somma il contenuto dei due registri e metti il risultato in uno dei due (ADD) 4. Memorizza il risultato nella cella X (STORE) Tipi di istruzioni Operazioni aritmetico-logiche Trasferimento: da M a CPU o I/O o viceversa Salti condizionati o no 5 6 1
Istruzioni per trasferimento dati Load: da memoria a registro Store: da registro a memoria Anche input/output Operandi: un registro e una cella di M Istruzioni logico/aritmetiche Operazioni aritmetiche: somma, sottrazione,... Operazioni logiche: and, or, xor, anche shift e rotate Operandi: due registri, o un regisytro e una cella di M,... 7 8 Istruzioni di controllo Salto: se l da eseguire non e la successiva nella lista Condizionato o no Un solo operando: indirizzo prossima Stop Operazioni da eseguire per una Esempio: store x Operazioni (Micro-istruzioni): acc mdr ir[x] mar mdr M[mar] 9 10 Operazioni da eseguire per una Esempio: load x Operazioni (Micro-istruzioni): ir[x] mar M[mar] mdr mdr acc Esercizio su linguaggio macchina x:.data 2 0; y:.data 2 8; load y; multiply y; Dire se: Alla fine y contiene 64 Alla fine x contiene 64 store x mette in acc il contenuto della cella x multiply y mette in acc la moltiplicazione dei valori in x e y 11 12 2
Esercizio su linguaggio macchina x:.data 2 10; y:.data 2 2; load x; multiply x; write x; write y; add y; multiply y; store y; write x; write y; Cosa viene stampato? 13 Esercizio su linguaggio macchina Scrivere un programma che prende un numero naturale >1 in input e stampa 1 se e un numero pari, altrimenti stampa 0. due:.data 2 2; uno:.data 2 1; x:.data 2 0; read; ciclo: sub due; jmpz stampa1; sub uno; jmpz stampa0; joad x; jump ciclo; stampa0: load zero; write; stampa1: load uno; write; 14 Modi di indirizzamento Indirizzamento diretto L operando e parte dell (campo indirizzo) Indirizzamento diretto Campo indirizzo = indirizzo dell operando Quanti accessi in M sono necessari per accedere all operando? Uno Indirizzo A 15 16 Indirizzamento indiretto Il campo indirizzo contiene l indirizzo di una cella di M, che contiene l indirizzo dell operando Due accessi in M per ottenere l operando Indirizzamento indiretto Indirizzo A Puntatore all operando 17 18 3
Indirizzamento registro L operando e in un registro indicato nel campo indirizzo Nome di registro R Registri Indirizzamento registro indiretto Stesso principio dell indirizzamento indiretto L operando e in una cella di M puntata dal contenuto del registro R Un accesso in meno in M rispetto all indirizzamento indiretto 19 20 Indirizzamento registro indiretto Modi di indirizzamento Nome di un registro R Registri Che modi di indirizzamento sono usati nel linguaggio macchina usato? Indirizzamento registro Indirizzamento diretto Puntatore all operando 21 22 Esercizio su modi di indirizzamento load x x con indirizzamento indiretto Come si ottengono gli operandi? Primo operando: in acc Secondo operando: in M[M[X]] X MAR, M[MAR] MBR, MBR MAR, M[MAR] MBR Esercizio Linux Posizione: home directory che contiene dir1 che contiene file1 Sequenza di comandi per: Spostare file1 in home Creare file2 in dir1 mv dir1/file1. cd dir1 emacs file2 23 24 4
Esercizio Linux Posizione: home directory che contiene dir1 e dir2 Dir1 contiene file1 e dir2 contiene file2 Sequenza di comandi per Spostare file1 in dir2 Rimuovere dir1 Copiare file2 in home mv dir1/file1 dir2 rmdir dir1 cp dir2/file2. 25 5