• Non ci sono risultati.

COSTRUZIONE DEL MICROCODICE PER ISTRUZIONI DI TIPO M68000

N/A
N/A
Protected

Academic year: 2021

Condividi "COSTRUZIONE DEL MICROCODICE PER ISTRUZIONI DI TIPO M68000"

Copied!
38
0
0

Testo completo

(1)

COSTRUZIONE DEL MICROCODICE PER ISTRUZIONI DI TIPO M68000 Si vogliono dare le μ-routine simboliche per insiemi di istruzioni simili a quelle di M68000:

1. Supponendo di avere un processore generico, con parole di memoria da 32 bit, registri interni Ri in numero adeguato da 32 bit e bus dati da 32 bit.

2. Supponendo di avere la struttura interna del processore a un solo bus (vedi di seguito).

3. Supponendo di avere l’unità di controllo μ-programmata di Figura 8.25 (vedi di seguito).

4. Scegliendo alcune tipologie di istruzione macchina differenti, binarie o unarie:

Mnemonico Argomento / i Commento

a. move s, d ! trasferimento

b. add (and) s, d ! aritmetica (logica)

c. jump dest. ! salto incondizionato

d. branch = 0 dest. ! salto condizionato = 0 5. Ortogonalizzando un argomento in tutti i modi possibili, per avere generalità.

6. Lasciando l’altro argomento in modo di registro, per evitare troppe complessità peraltro non particolarmente significative.

7. Usando:

a. per gli argomenti di tipo dato (sorgente o destinazione) i modi di indirizzamento specifici per i dati,

b. per l’argomento destinazione di salto i modi di indirizzamento specifici per le istruzioni.

8. Precisando per ogni modo di indirizzamento il ragionevole ingombro dell’istruzione in termini di numero di parole di memoria (da 32 bit); in particolare:

a. la parola di codice operativo è lunga abbastanza per contenere il codice operativo, i modi e i numeri dei registri contenuti nell’istruzione, e anche un eventuale spiazzamento breve

b. costante, indirizzo e spiazzamento (non breve) occupano ciascuna un parola aggiuntiva.

9. Includendo la fase di prelievo e specificando il salto alle varie modalità di esecuzione secondo il modo di indirizzamento.

10. Prevedendo due versioni ragionevoli di μ-codice laddove si dà il caso (per esempio, salto condizionato).

Si danno di seguito le istruzioni, le interpretazioni RTL, le tavole di ingombro (ragionevole), e le tabelle di μ-codice denotato simbolicamente: prima interpretazione RTL delle μ- operazioni, poi i μ-ordini corrispondenti alle μ-operazioni.

(2)

MODELLO GENERICO DI PROCESSORE

n registri di uso generale

SP R

0

R

1

R

n − 1

PC

puntatore alla pila

contatore di programma

parola

banco di registri

registri di uso speciale

informazioni di stato

32 bit

vari bit di uso diverso

(3)

STRUTTURA DI PROCESSORE A UN BUS INTERNO

linee di dato linee di indirizzo

bus di memoria

riporto in ingresso ALU

PC

MAR

MDR

V

Z add

and sub

IR

TEMP R0

linee di comando della ALU

ordini

Rn − 1 decodificatore

di istruzioni e circuito di controllo bus interno del processore

A B

select

costante 4

MUX

R 32 bit

32 bit 32 bit

(4)

STRUTTURA DELL’UNITÀ μ-PROGRAMMATA

decodificatore di μ ordini

memoria di μ programma

C0 (μ indirizzo) C1 C2

altri μ ordini

(diretti al resto del processore o unità di calcolo) C10 C9 C8 decodificatore

decodificatore

circuiti di mascheratura

e decodifica bit di esito

(cod. cond.)

ingressi esterni (bus)

Rsorg. Rdest.

IR

Rdest.out

Rdest.in

Rsorg.out

Rsorg.in

μ MAR

decode opcode field of IR mask by IR10,9,8

mask by IR8

R15in R15out R0in R0out

μ IR

codice op. e modo

schiera di porte OR

interpreta campi

μ ordini diretti ai registri di processore

32 bit

(5)

CLASSE DI TRASFERIMENTO – DA MEMORIA A REGISTRO PRIMO ARGOMENTO ORTOGONALE

move sorgente_in_tutti_i_modi_di_indirizzamento_di_dato, destinazione_registro Modo Modello Generico Funzionamento in RTL

move s, d d ← [s]

1 move #costante, Rq Rq ← costante

2 move Rp, Rq Rq ← [Rp]

3 move (Rp), Rq Rq ← [[Rp]]

4 move (Rp) +, Rq Rq ← [[Rp]] e poi Rp ← [Rp] + 4 5 move − (Rp), Rq Rp ← [Rp] − 4 e poi Rq ← [[Rp]]

6 move spiazzamento (Rp), Rq Rq ← [spiazzamento + [Rp]]

7 move spiazzamento (Rp, Ra), Rq Rq ← [spiazzamento + [Rp] + [Ra]]

8 move indirizzo, Rq Rq ← [indirizzo]

9 move (indirizzo), Rq Rq ← [[indirizzo]]

Modo Modello Generico Ingombri (in parole da 32 bit)

move s, d d ← [s]

1 move #costante, Rq 2 (1 opcode + 1 costante)

2 move Rp, Rq 1 (soltanto opcode)

3 move (Rp), Rq 1 (soltanto opcode) 4 move (Rp) +, Rq 1 (soltanto opcode) 5 move − (Rp), Rq 1 (soltanto opcode)

6 move spiazzamento (Rp), Rq 2 (1 opcode + 1 spiazzamento) 7 move spiazzamento (Rp, Ra), Rq 2 (1 opcode + 1 spiazzamento) 8 move indirizzo, Rq 2 (1 opcode + 1 indirizzo) 9 move (indirizzo), Rq 2 (1 opcode + 1 indirizzo)

(6)

move #costante, Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo,

se (modo di s = #cost.) và a μ−ind. a se (modo di s = Rp) và a μ−ind. b se (modo di s = (Rp)) và a μ−ind. c se (modo di s = (Rp) +) và a μ−ind. d se (modo di s = − (Rp)) và a μ−ind. e se (modo di s = spi. (Rp)) và a μ−ind. f se (modo di s = spi. (Rp, Rb)) và a μ−ind. g se (modo di s = ind.) và a μ−ind. h se (modo di s = (ind.)) và a μ−ind. i

decode opcode field of IR,

if (mode of s = #cost.) goto μ−addr. a if (mode of s = Rp) goto μ−addr. b if mode of s = (Rp)) goto μ−addr. c if (mode of s = (Rp) +) goto μ−addr. d if (mode of s = − (Rp)) goto μ−addr. r if (mode of s = spi. (Rp)) goto μ−addr. f if (mode of s = spi. (Rp, Rb)) goto μ−addr. g if (mode of s = ind.) goto μ−addr. h if (mode of s = (ind.)) goto μ−addr. i 5 a MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 6 a + 1 PC ← [Z], attendi Zout, PCin, WMFC

7 a + 2 Rq ← [MDR], finisci (o và a μ−ind. 1) MDRout, Rqin, end (or goto μ−addr. 1)

(7)

move Rp, Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = #cost., Rp, (Rp), (Rp) +, − (Rp), spi.

(Rp)., spi. (Rp, Rb)., ind., (ind.)) và a μ−ind.

a, b, c, d, e, f, g, h

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, d, e, f, g, h

5 b Rq ← [Rp], finisci (o và a μ−ind. 1) Rpout, Rqin, end (or goto μ−addr. 1)

move (Rp), Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = #cost., Rp, (Rp), (Rp) +, − (Rp), spi.

(Rp)., spi. (Rp, Rb)., ind., (ind.)) và a μ−ind.

a, b, c, d, e, f, g, h

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, d, e, f, g, h

5 c MAR ← [Rp], leggi, attendi Rpout, MARin, read, WMFC

6 c + 1 Rq ← [MDR], finisci (o và a μ−ind. 1) MDRout, Rqin, end (or goto μ−addr. 1)

(8)

move (Rp) +, Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = #cost., Rp, (Rp), (Rp) +, − (Rp), spi.

(Rp)., spi. (Rp, Rb)., ind., (ind.)) và a μ−ind.

a, b, c, d, e, f, g, h

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, d, e, f, g, h

5 d MAR ← [Rp], Z ← [Rp] + 4, leggi Rpout, MARin, select 4, Zin, read, add 6 d + 1 Rp ← [Z], attendi Zout, Rpin, WMFC

7 d + 2 Rq ← [MDR], finisci (o và a μ−ind. 1) MDRout, Rqin, end (or goto μ−addr. 1)

move − (Rp), Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = #cost., Rp, (Rp), (Rp) +, − (Rp), spi.

(Rp)., spi. (Rp, Rb)., ind., (ind.)) và a μ−ind.

a, b, c, d, e, f, g, h

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, d, e, f, g, h

5 e Z ← [Rp] − 4 Rpout, select 4, Zin, sub

6 e + 1 Rp ← [Z], MAR ← [Z], leggi, attendi Zout, Rpin, MARin, read, WMFC

7 e + 2 Rq ← [MDR], finisci (o và a μ−ind. 1) MDRout, Rqin, end (or goto μ−addr. 1)

(9)

move spiazzamento (Rp), Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = #cost., Rp, (Rp), (Rp) +, − (Rp), spi.

(Rp)., spi. (Rp, Rb)., ind., (ind.)) và a μ−ind.

a, b, c, d, e, f, g, h

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, d, e, f, g, h

5 f MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add

6 f + 1 PC ← [Z] Zout, PCin

7 f + 2 V ← [Rp], attendi Rpout, Vin, WMFC

8 f + 3 Z ← [MDR] + [V] MDRout, select V, Zin, add 9 f + 4 MAR ← [Z], leggi, attendi Zout, MARin, read, WMFC

10 f + 5 Rq ← [MDR], finisci (o và a μ−ind. 1) MDRout, Rqin, end (or goto μ−addr. 1)

move spiazzamento (Rp, Ra), Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = #cost., Rp, (Rp), (Rp) +, − (Rp), spi.

(Rp)., spi. (Rp, Rb)., ind., (ind.)) và a μ−ind.

a, b, c, d, e, f, g, h

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, d, e, f, g, h

5 g MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add

6 g + 1 PC ← [Z] Zout, PCin

7 g + 2 V ← [Rp] Rpout, Vin

8 g + 3 Z ← [Ra] + [V] Raout, select V, Zin, add 9 g + 4 V ← [Z], attendi Zout, Vin, WMFC

10 g + 5 Z ← [MDR] + [V] MDRout, select V, Zin, add 11 g + 6 MAR ← [Z], leggi, attendi Zout, MARin, read, WMFC

12 g + 7 Rq ← [MDR], finisci (o và a μ−ind. 1) MDRout, Rqin, end (or goto μ−addr. 1)

(10)

move indirizzo, Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = #cost., Rp, (Rp), (Rp) +, − (Rp), spi.

(Rp)., spi. (Rp, Rb)., ind., (ind.)) và a μ−ind.

a, b, c, d, e, f, g, h

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, d, e, f, g, h

5 h MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 6 h + 1 PC ← [Z], attendi Zout, PCin, WMFC

7 h + 2 MAR ← [MDR], leggi, attendi MDRout, MARin, read, WMFC

8 h + 3 Rq ← [MDR], finisci (o và a μ−ind. 1) MDRout, Rqin, end (or goto μ−addr. 1)

move (indirizzo), Rq – in M68000 non esiste !

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = #cost., Rp, (Rp), (Rp) +, − (Rp), spi.

(Rp)., spi. (Rp, Rb)., ind., (ind.)) và a μ−ind.

a, b, c, d, e, f, g, h

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, d, e, f, g, h

5 i MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 6 i + 1 PC ← [Z], attendi Zout, PCin, WMFC

7 i + 2 MAR ← [MDR], leggi, attendi MDRout, MARin, read, WMFC 8 i + 3 MAR ← [MDR], leggi, attendi MDRout, MARin, read, WMFC

9 i + 4 Rq ← [MDR], finisci (o và a μ−ind. 1) MDRout, Rqin, end (or goto μ−addr. 1)

(11)

CLASSE DI TRASFERIMENTO – DA REGISTRO A MEMORIA SECONDO ARGOMENTO ORTOGONALE

move sorgente_registro, destinazione_in_tutti_i_modi_di_indirizzamento_di_dato Modo Modello Generico Funzionamento in RTL

move s, d d ← [s]

1 impossibile

2 move Rp, Rq Rq ← [Rp]

3 move Rp, (Rq) [Rq] ← [Rp]

4 move Rp, (Rq) + [Rq] ← [Rp] e poi Rq ← [Rq] + 4 5 move Rp, − (Rq) Rq ← [Rq] − 4 e poi [Rq] ← [Rp]

6 move Rp, spiazzamento (Rq) spiazzamento + [Rp] ← [Rp]

7 move Rp, spiazzamento (Rq, Rb) spiazzamento + [Rp] + [Rb] ← [Rp]

8 move Rp, indirizzo indirizzo ← [Rp]

9 move Rp, (indirizzo) [indirizzo] ← [Rp]

Modo Modello Generico Ingombri (in parole da 32 bit)

move s, d d ← [s]

1 impossibile

2 move Rp, Rq 1 (soltanto opcode)

3 move Rp, (Rq) 1 (soltanto opcode) 4 move Rp, (Rq) + 1 (soltanto opcode) 5 move Rp, − (Rq) 1 (soltanto opcode)

6 move Rp, spiazzamento (Rq) 2 (1 opcode + 1 spiazzamento) 7 move Rp, spiazzamento (Rq, Rb) 2 (1 opcode + 1 spiazzamento) 8 move Rp, indirizzo 2 (1 opcode + 1 indirizzo) 9 move Rp, (indirizzo) 2 (1 opcode + 1 indirizzo)

(12)

move Rp, Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 a Rq ← [Rp], finisci (o và a μ−ind. 1) Rpout, Rqin, end (or goto μ−addr. 1)

move Rp, (Rq)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 b MAR ← [Rq] Rqout, MARin

6 b + 1 MDR ← [Rp], scrivi, attendi, finisci (o và a μ−ind. 1)

Rpout, MDRin, write, WMFC, end (or goto μ−addr. 1)

(13)

move Rp, (Rq) +

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 c MAR ← [Rq], Z ← [Rq] + 4 Rqout, MARin, select 4, Zin, add 6 c + 1 MDR ← [Rp], scrivi Rpout, MDRin, write

8 c + 2 Rq ← [Z], attendi, finisci (o và a μ−ind. 1) Zout, Rqin, WMFC, end (or goto μ−addr.

1)

move Rp, − (Rq)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 d Z ← [Rq] − 4 Rqout, select 4, Zin, sub

6 d + 1 Rq ← [Z], MAR ← [Z] Zout, MARin, Rqin

8 d + 2 MDR ← [Rp], scrivi, attendi, finisci (o và a μ−ind. 1)

Rpout, MDRin, write, WMFC, end (or goto μ−addr. 1)

(14)

move Rp, spiazzamento (Rq)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 e MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add

6 e + 1 PC ← [Z] Zout, PCin

7 e + 2 V ← [Rq], attendi Rqout, Vin, WMFC

8 e + 3 Z ← [MDR] + [V] MDRout, select V, Zin, add

9 e + 4 MAR ← [Z] Zout, MARin

10 e + 5 MDR ← [Rp], scrivi, attendi, finisci (o và a μ−ind. 1)

Rpout, MDRin, write, WMFC, end (or goto μ−addr. 1)

move Rp, spiazzamento (Rq, Rb)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 f MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add

6 f + 1 PC ← [Z] Zout, PCin

7 f + 2 V ← [Rq] Rqout, Vin

8 f + 3 Z ← [Rb] + [V] Rbout, select V, Zin, add 9 f + 4 V ← [Z], attendi Zout, Vin, WMFC

10 f + 5 Z ← [MDR] + [V] Rbout, select V, Zin, add

11 f + 6 MAR ← [Z] Zout, MARin

12 f + 7 MDR ← [Rp], scrivi, attendi, finisci (o và

a μ−ind. 1) Rpout, MDRin, write, WMFC, end (or goto μ−addr. 1)

(15)

move Rp, indirizzo

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 g MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 6 g + 1 PC ← [Z], attendi Zout, PCin, WMFC

7 g + 2 MAR ← [MDR] MDRout, MARin

8 g + 3 MDR ← [Rp], scrivi, attendi, finisci (o và

a μ−ind. 1) Rpout, MDRin, write, WMFC, end (or goto μ−addr. 1)

move Rp, (indirizzo) – in M68000 non esiste !

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 h MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 6 h + 1 PC ← [Z], attendi Zout, PCin, WMFC

7 h + 2 MAR ← [MDR], leggi, attendi MDRout, MARin, read, WMFC

8 h + 3 MAR ← [MDR] MDRout, MARin

9 h + 4 MDR ← [Rp], scrivi, attendi, finisci (o và

a μ−ind. 1) Rpout, MDRin, write, WMFC, end (or goto μ−addr. 1)

(16)

CLASSE ARITMETICA-LOGICA (ADD, AND)

FONDAMENTALMENTE IDENTICA A MOVE, SALVO ESEGUIRE L’OPERAZIONE PRIMO ARGOMENTO ORTOGONALE

add sorgente_in_tutti_i_modi_di_indirizzamento_di_dato, destinazione_registro Modo Modello Generico Funzionamento in RTL

add s, d d ← [s] + [d]

1 add #costante, d d ← costante + [d]

2 add Rp, d d ← [Rp] + [d]

3 add (Rp), d d ← [[Rp]] + [d]

4 add (Rp) +, d d ← [[Rp]] + [d] e poi Rp ← [Rp] + 4 5 add − (Rp), d Rp ← [Rp] − 4 e poi d ← [[Rp]] + [d]

6 add spiazz. (Rp), d d ← [spiazz. + [Rp]] + [d]

7 add spiazz. (Rp, Ra), d d ← [spiazz. + [Rp] + [Ra]] + [d]

8 add indirizzo, d d ← [indirizzo] + [d]

9 add (indirizzo), d d ← [[indirizzo]] + [d]

Modo Modello Generico Ingombri (in parole da 32 bit)

add s, d d ← [s]

1 add #costante, Rq 2 (1 opcode + 1 costante)

2 add Rp, Rq 1 (soltanto opcode)

3 add (Rp), Rq 1 (soltanto opcode) 4 add (Rp) +, Rq 1 (soltanto opcode) 5 add − (Rp), Rq 1 (soltanto opcode)

6 add spiazzamento (Rp), Rq 2 (1 opcode + 1 spiazzamento) 7 add spiazzamento (Rp, Ra), Rq 2 (1 opcode + 1 spiazzamento) 8 add indirizzo, Rq 2 (1 opcode + 1 indirizzo) 9 add (indirizzo), Rq 2 (1 opcode + 1 indirizzo)

(17)

add #costante, Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = costante, di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 a MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add

6 a + 1 PC ← [Z] Zout, PCin

7 a + 2 V ← [Rq], attendi Rqout, Vin, WMFC

8 a + 3 Z ← [MDR] + [V] MDRout, select V, Zin, add

9 a + 4 Rq ← [Z], finisci (o và a μ−ind. 1) Zout, Rqin, end (or goto μ−addr. 1)

add Rp, Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = costante, di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 b V ← [Rq] Rqout, Vin

6 b + 1 Z ← [Rp] + [V] Rpout, select V, Zin, add

7 b + 2 Rq ← [Z], finisci (o và a μ−ind. 1) Zout, Rqin, end (or goto μ−addr. 1)

(18)

add (Rp), Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = costante, di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 c MAR ← [Rp], leggi Rpout, MARin, read 6 c + 1 V ← [Rq], attendi Rqout, Vin, WMFC

7 c + 2 Z ← [MDR] + [V] MDRout, select V, Zin, add

8 c + 3 Rq ← [Z], finisci (o và a μ−ind. 1) Zout, Rqin, end (or goto μ−addr. 1)

add (Rp) +, Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = costante, di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 d MAR ← [Rp], Z ← [Rp] + 4, leggi Rpout, MARin, select 4, Zin, read, add

6 d + 1 Rp ← [Z] Zout, Rpin

7 d + 2 V ← [Rq], attendi Rqout, Vin, WMFC

8 d + 3 Z ← [MDR] + [V] MDRout, select V, Zin, add

9 d + 4 Rq ← [Z], finisci (o và a μ−ind. 1) Zout, Rqin, end (or goto μ−addr. 1)

(19)

add − (Rp), Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = costante, di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 e Z ← [Rp] − 4 Rpout, select 4, Zin, sub

6 e + 1 Rp ← [Z], MAR ← [Z], leggi Zout, Rpin, MARin, read 7 e + 2 V ← [Rq], attendi Rqout, Vin, WMFC

8 e + 3 Z ← [MDR] + [V] MDRout, select V, Zin, add

9 e + 4 Rq ← [Z], finisci (o và a μ−ind. 1) Zout, Rqin, end (or goto μ−addr. 1)

add spiazzamento (Rp), Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = costante, di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 f MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add

6 f + 1 PC ← [Z] Zout, PCin

7 f + 2 V ← [Rp], attendi Rpout, Vin, WMFC

8 f + 3 Z ← [MDR] + [V] MDRout, select V, Zin, add 9 f + 4 MAR ← [Z], leggi Zout, MARin, read

10 f + 5 V ← [Rq], attendi Rqout, Vin, WMFC

11 f + 6 Z ← [MDR] + [V] MDRout, select V, Zin, add

12 f + 7 Rq ← [Z], finisci (o và a μ−ind. 1) Zout, Rqin, end (or goto μ−addr. 1)

(20)

add spiazzamento (Rp, Ra), Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = costante, di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 g MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add

6 g + 1 PC ← [Z] Zout, PCin

7 g + 2 V ← [Rp], attendi Rpout, Vin, WMFC

8 g + 3 Z ← [MDR] + [V] MDRout, select V, Zin, add

9 g + 4 V ← [Z] Zout, Vin

10 g + 5 Z ← [Ra] + [V] Raout, select V, Zin, add 11 g + 6 MAR ← [Z], leggi Zout, MARin, read

12 g + 7 V ← [Rq], attendi Rqout, Vin, WMFC

13 g + 8 Z ← [MDR] + [V] MDRout, select V, Zin, add

14 g + 9 Rq ← [MDR], finisci (o và a μ−ind. 1) MDRout, Rqin, end (or goto μ−addr. 1)

add indirizzo, Rq

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = costante, di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 h MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 6 h + 1 PC ← [Z], attendi Zout, PCin, WMFC

7 h + 2 MAR ← [MDR], leggi MDRout, MARin, read 8 h + 3 V ← [Rq], attendi Rqout, Vin, WMFC

9 h + 4 Z ← [MDR] + [V] MDRout, select V, Zin, add

10 h + 5 Rq ← [Z], finisci (o và a μ−ind. 1) Zout, Rqin, end (or goto μ−addr. 1)

(21)

add (indirizzo), Rq – in M68000 non esiste !

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di s = costante, di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 i MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 6 i + 1 PC ← [Z], attendi Zout, PCin, WMFC

7 i + 2 MAR ← [MDR], leggi, attendi MDRout, MARin, read, WMFC 8 i + 3 MAR ← [MDR], leggi MDRout, MARin, read

9 i + 4 V ← [Rq], attendi Rqout, Vin, WMFC

10 i + 5 Z ← [MDR] + [V] MDRout, select V, Zin, add

11 i + 6 Rq ← [Z], finisci (o và a μ−ind. 1) Zout, Rqin, end (or goto μ−addr. 1) idem per AND e tutte le altre …

(22)

CLASSE ARITMETICA-LOGICA (ADD, AND)

FONDAMENTALMENTE IDENTICA A MOVE, SALVO ESEGUIRE L’OPERAZIONE SECONDO ARGOMENTO ORTOGONALE

add sorgente_registro, destinazione_in_tutti_i_modi_di_indirizzamento_di_dato Modo Modello Generico Funzionamento in RTL

add s, d d ← [s] + [d]

1 impossibile

2 add s, Rq Rq ← [s] + [Rq]

3 add s, (Rq) [Rq] ← [s] + [[Rq]]

4 add s, (Rq) + [Rq] ← [s] + [[Rq]] e poi Rq ← [Rq] + 4 5 add s, − (Rq) Rq ← [Rq] − 4 e poi [Rq] ← [s] + [[Rq]]

6 add s, spiazz. (Rq) spiazz. + [Rq] ← [s] + [spiazz. + [Rq]]

7 add s, spiazz. (Rq, Rb) spiazz. + [Rq] + [Rb] ← [s] + [spiazz. + [Rq] + [Rb]]

8 add s, indirizzo indirizzo ← [s] + [indirizzo]

9 add s, (indirizzo) [indirizzo] ← [s] + [[indirizzo]]

Modo Modello Generico Ingombri (in parole da 32 bit)

add s, d d ← [s] + [d]

1 impossibile

2 add Rp, Rq 1 (soltanto opcode)

3 add Rp, (Rq) 1 (soltanto opcode) 4 add Rp, (Rq) + 1 (soltanto opcode) 5 add Rp, − (Rq) 1 (soltanto opcode)

6 add Rp, spiazzamento (Rq) 2 (1 opcode + 1 spiazzamento) 7 add Rp, spiazzamento (Rq, Rb) 2 (1 opcode + 1 spiazzamento) 8 add Rp, indirizzo 2 (1 opcode + 1 indirizzo) 9 add Rp, (indirizzo) 2 (1 opcode + 1 indirizzo)

(23)

add Rp, (Rq)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 b MAR ← [Rq], leggi Rqout, MARin, read 6 b + 1 V ← [Rp], attendi Rpout, Vin, WMFC

7 b + 2 Z ← [MDR] + [V] MDRout, select V, Zin, add 8 b + 3 MDR ← [Z], scrivi, attendi, finisci (o và a

μ−ind. 1)

Zout, MDRin, write, WMFC, end (or goto μ−addr. 1)

add Rp, (Rq) +

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 c MAR ← [Rq], Z ← [Rq] + 4, leggi Rqout, MARin, select 4, Zin, read, add

6 c + 1 Rq ← [Z] Zout, Rqin,

7 c + 2 V ← [Rp], attendi Rpout, Vin, WMFC

8 c + 3 Z ← [MDR] + [V] MDRout, select V, Zin, add 9 c + 4 MDR ← [Z], scrivi, attendi, finisci (o và a

μ−ind. 1)

Zout, MDRin, write, WMFC, end (or goto μ−addr. 1)

(24)

add Rp, − (Rq)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 d Z ← [Rq] − 4 Rqout, select 4, Zin, sub

6 d + 1 Rq ← [Z], MAR ← [Z], leggi Zout, MARin, Rqin, read 7 d + 2 V ← [Rp], attendi Rpout, Vin, WMFC

8 d + 3 Z ← [MDR] + [V] MDRout, select V, Zin, add 9 d + 4 MDR ← [Z], scrivi, attendi, finisci (o và a

μ−ind. 1) Zout, MDRin, write, WMFC, end (or goto μ−addr. 1)

add Rp, spiazzamento (Rq)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 e MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add

6 e + 1 PC ← [Z] Zout, PCin

7 e + 2 V ← [Rq], attendi Rqout, Vin, WMFC

8 e + 3 Z ← [MDR] + [V] MDRout, select V, Zin, add 9 e + 4 MAR ← [Z], leggi Zout, MARin, read

10 e + 5 V ← [Rp], attendi Rpout, Vin, WMFC

11 e + 6 Z ← [MDR] + [V] MDRout, select V, Zin, add 12 e + 7 MDR ← [Z], scrivi, attendi, finisci (o và a

μ−ind. 1)

Zout, MDRin, write, WMFC, end (or goto μ−addr. 1)

(25)

add Rp, spiazzamento (Rq, Rb)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 f MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add

6 f + 1 PC ← [Z] Zout, PCin

7 f + 2 V ← [Rq] Rqout, Vin

8 f + 3 Z ← [Rb] + [V] Rbout, select V, Zin, add 9 f + 4 V ← [Z], attendi Zout, Vin, WMFC

10 f + 5 Z ← [MDR] + [V] Rbout, select V, Zin, add 11 f + 6 MAR ← [Z], leggi Zout, MARin, read

12 f + 7 V ← [Rp], attendi Rpout, Vin, WMFC

13 f + 8 Z ← [MDR] + [V] MDRout, select V, Zin, add 14 f + 9 MDR ← [Z], scrivi, attendi, finisci (o và a

μ−ind. 1)

Zout, MDRin, write, WMFC, end (or goto μ−addr. 1)

(26)

add Rp, indirizzo

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 g MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 6 g + 1 PC ← [Z], attendi Zout, PCin, WMFC

7 g + 2 MAR ← [MDR], leggi MDRout, MARin, read 8 g + 3 V ← [Rp], attendi Rpout, Vin, WMFC

9 g + 4 Z ← [MDR] + [V] MDRout, select V, Zin, add 10 g + 5 MDR ← [Z], scrivi, attendi, finisci (o và a

μ−ind. 1)

Zout, MDRin, write, WMFC, end (or goto μ−addr. 1)

add Rp, (indirizzo) – in M68000 non esiste !

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di d = di registro, indiretto da reg., con autoinc., con autodec., con indice e spi., con base indice e spi., assoluto, indiretto da mem.) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of d

= … (as aside)) goto μ−addr. a, b, c, …

5 h MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 6 h + 1 PC ← [Z], attendi Zout, PCin, WMFC

7 h + 2 MAR ← [MDR], leggi MDRout, MARin, read 8 h + 3 V ← [Rp], attendi Rpout, Vin, WMFC

9 h + 4 MAR ← [MDR], leggi, attendi MDRout, MARin, read, WMFC 10 h + 5 Z ← [MDR] + [V] MDRout, select V, Zin, add 11 h + 6 MDR ← [Z], scrivi, attendi, finisci (o và a

μ−ind. 1) Zout, MDRin, write, WMFC, end (or goto μ−addr. 1)

idem per AND e tutte le altre …

(27)

CLASSE DI SALTO INCONDIZIONATO

jump destinazione_in_tutti_i_modi_di_indirizzamento_di_istruzione Modo Modello Generico Funzionamento in RTL

jump dest. PC ← [dest. ]

1 jump (Rp) PC ← [Rp]

2 jump spiazzamento (PC) jump etichetta

PC ← spiazzamento + [PC]

PC ← distanza etichetta + [PC]

3 jump spiazzamento (PC, Ra) jump etichetta (Rb)

PC ← spiazzamento + [PC] + [Ra]

PC ← distanza etichetta + [PC] + [Ra]

4 jump indirizzo PC ← indirizzo

5 jump (indirizzo) PC ← [indirizzo]

Modo Modello Generico Ingombri (in parole da 32 bit)

jump dest. d ← [s]

1 jump (Rp) 1 (soltanto opcode)

2 jump spiazzamento (PC)

jump etichetta 2 (1 opcode + 1 spiazzamento) 3 jump spiazzamento (PC, Ra)

jump etichetta (Rb) 2 (1 opcode + 1 spiazzamento) 4 jump indirizzo 2 (1 opcode + 1 spiazzamento) 5 jump (indirizzo) 2 (1 opcode + 1 spiazzamento)

(28)

jump (Rp)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di dest. = indiretto da registro, relativo a PC, con base relativo a PC, assoluto, indiretto da memoria) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 a PC ← [Rp], finisci (o và a μ−ind. 1) Rpout, PCin, end (or goto μ−addr. 1)

(29)

jump spiazzamento (PC)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di dest. = indiretto da registro, relativo a PC, con base relativo a PC, assoluto, indiretto da memoria) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 b MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 6 b + 1 V ← [Z], attendi Zout, Vin, WMFC

7 b + 2 Z ← [MDR] + [V] MDRout, select V, Zin, add

8 b + 3 PC ← [Z], finisci (o và a μ−ind. 1) Zout, PCin, end (or goto μ−addr. 1)

NOTA BENE: il valore di PC cui si fà riferimento è quello che punta all’istruzione immediatamente successiva a “jump (PC)”.

jump spiazzamento (PC, Ra)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di dest. = indiretto da registro, relativo a PC, con base relativo a PC, assoluto, indiretto da memoria) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 c MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add

6 c + 1 V ← [Z] Zout, Vin

7 c + 2 Z ← [Ra] + [V] Raout, select V, Zin, add 8 c + 3 V ← [Z], attendi Zout, Vin, WMFC

9 c + 4 Z ← [MDR] + [V] MDRout, select V, Zin, add

10 c + 5 PC ← [Z], finisci (o và a μ−ind. 1) Zout, PCin, end (or goto μ−addr. 1)

NOTA BENE: il valore di PC cui si fà riferimento è quello che punta

all’istruzione immediatamente successiva a “jump (PC, Ra)”.

(30)

jump indirizzo

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di dest. = indiretto da registro, relativo a PC, con base relativo a PC, assoluto, indiretto da memoria) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 d MAR ← [PC], preleva, attendi PCout, MARin, read, WMFC

6 d + 1 PC ← [MDR], finisci (o và a μ−ind. 1) MDRout, PCin, end (or goto μ−addr. 1)

jump (indirizzo)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di dest. = indiretto da registro, relativo a PC, con base relativo a PC, assoluto, indiretto da memoria) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 e MAR ← [PC], preleva, attendi PCout, MARin, read, WMFC 6 e + 1 MAR ← [MDR], leggi, attendi MDRout, MARin, read, WMFC

7 e + 2 PC ← [MDR], finisci (o và a μ−ind. 1) MDRout, PCin, end (or goto μ−addr. 1)

(31)

CLASSE DI SALTO CONDIZIONATO

branch cc destinazione_in_tutti_i_modi_di_indirizzamento_di_istruzione Modo Modello Generico Funzionamento in RTL

branch cc dest.

se cc è verificata, allora PC ← [dest. ] altrimenti

PC ← [PC] + 4 × ingombro

1 branch cc (Rp) PC ← [Rp]

2 branch cc spiazzamento (PC) branch cc etichetta

PC ← spiazzamento + [PC]

PC ← distanza etichetta + [PC]

3 branch cc spiazzamento (PC, Ra) branch cc etichetta (Ra)

PC ← spiazzamento + [PC] + [Ra]

PC ← distanza etichetta + [PC] + [Ra]

4 branch cc indirizzo PC ← indirizzo 5 branch cc (indirizzo) PC ← [indirizzo]

Modo Modello Generico Ingombri (in parole da 32 bit) branch cc dest. d ← [s]

1 branch cc (Rp) 1 (soltanto opcode) 2 branch cc spiazzamento (PC)

branch cc etichetta 2 (1 opcode + 1 spiazzamento) 3 branch cc spiazzamento (PC, Ra)

branch cc etichetta (Ra) 2 (1 opcode + 1 spiazzamento) 4 branch cc indirizzo 2 (1 opcode + 1 spiazzamento) 5 branch cc (indirizzo) 2 (1 opcode + 1 spiazzamento)

A TITOLO DI ESEMPIO … (non sono tutte le combinazioni)

branch = 0 (Rp)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di dest. = indiretto da registro, relativo a PC, con base relativo a PC, assoluto, indiretto

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

(32)

branch = 0 spiazzamento (PC) – soluzione 1 (lunga, evita prelievo spiazzamento se inutile)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di dest. = indiretto da registro, relativo a PC, con base relativo a PC, assoluto, indiretto da memoria) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 b se [bit Z] = 0 và a μ−ind. b + 5 if bit Z = 0 goto addr. step 10

6 b + 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 7 b + 2 V ← [Z], attendi Zout, Vin, WMFC

8 b + 3 Z ← [MDR] + [V] MDRout, select V, Zin, add

9 b + 4 PC ← [Z], finisci (o và a μ−ind. 1) Zout, PCin, end (or goto μ−addr. 1) 10 b + 5 Z ← [PC] + 4 PCout, select 4, Zin, add

11 b + 6 PC ← [Z], finisci (o và a μ−ind. 1) Zout, PCin, end (or goto μ−addr. 1)

branch = 0 spiazzamento (PC) – soluzione 2

(breve, preleva sempre spiazzamento)

passo μ−ind. μ−operazioni (in RTL) μ−ordini

1 1 MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 2 2 PC ← [Z], V ← [Z], attendi Zout, PCin, Vin, WMFC

3 3 IR ← [MDR] MDRout, IRin

4 4

decodifica codice operativo, se (modo di dest. = indiretto da registro, relativo a PC, con base relativo a PC, assoluto, indiretto da memoria) và a μ−ind. a, b, c, …

decode opcode field of IR, if (mode of s

= … (as aside)) goto μ−addr. a, b, c, …

5 b MAR ← [PC], Z ← [PC] + 4, preleva PCout, MARin, select 4, Zin, read, add 6 b + 1 PC ← [Z], V ← [Z], attendi, se [bit Z] = 0

finisci (o và a μ−ind. 1) Zout, PCin, Vin, WMFC, if bit Z = 0 end (or goto addr. step 1)

7 b + 2 Z ← [MDR] + [V] MDRout, select V, Zin, add

8 b + 3 PC ← [Z], finisci (o và a μ−ind. 1) Zout, PCin, end (or goto μ−addr. 1)

NOTA BENE: il valore di PC cui si fà riferimento per entramte le soluzioni è quello che punta all’istruzione subito successiva a “branch = 0 spi. (PC)”.

branch = 0 spiazzamento (PC, Ra)

2 soluzioni sostanzialmente simili alle 2 precedenti

Riferimenti

Documenti correlati

 L’elenco partenti, della manifestazione, sarà fatto secondo questo ordine: DRIVER, CLASSIC e MODERN; esso comprenderà chiaramente: cognome (pilota e navigatore),

Considerando che il tempo che si impiega a trasmettere 1 ora di segnale pari 21.6 secondi calcolare quanti bit vengono utilizzati per memorizzare il singolo campione5. Calcolare

Sapendo che per la memorizzazione di ogni campione vengono utilizzati 16 bit si determini il valore minimo di f c che permette una corretta ricostruzione del segnale e il numero di

Il tracking di solito è realizzato su linee di Ascensione Retta, tali quindi da seguire la normale traiettoria delle sorgenti nella volta celeste dalla loro alba al loro

5 osserviamo le zone in cui percentualmente si sono re- gistrate le catture maggiori di una specie; senza tenere conto delle specie catturate occasionalmente si

Training - Durante il training, la cui durata prima dell'inizio delle prove critiche era di 7 giorni, ad ogni soggetto sperimentale venivano fornite acqua ad

Modo RUN – Stato normale dopo l'inserimento della tensione di esercizio – Visualizzazione del valore di misurazione attuale Modo SHOW – Visualizzazione delle impostazioni attuali

La sorgente di noise dominante e’ tipicamente interna all’amp e soltanto in configurazione fed back parte di questo noise e’ presente all’input; in altre parole, il segnale