36
1/7/2010 1 Architettura dei calcolatori e sistemi operativi Instruction Set Architecture Vittorio Zaccaria Dicembre 2009 Vittorio Zaccaria Dicembre 2009 Instruction set architecture Programma (C, Fortran, C++) Livello ISA HARDWARE SOFTWARE Eseguito da Vittorio Zaccaria Dicembre 2009 Processore

Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

Embed Size (px)

Citation preview

Page 1: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

1

Architettura dei calcolatori e sistemi operativi

Instruction Set Architecture

Vittorio Zaccaria ‐ Dicembre 2009

Vittorio Zaccaria

Dicembre 2009

Instruction set architectureProgramma

(C, Fortran, C++)

Livello ISAHARDWARE

SOFTWARE

Eseguito da

Vittorio Zaccaria ‐ Dicembre 2009

Processore

Page 2: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

2

Instruction set architecture• Registri e modello di memoria• Istruzioni

– Operazioni– Tipi dei dati delle operazioni– Indirizzamento– Formato in memoria delle istruzioni

• Stato architetturale del processore• Gestione delle eccezioni

Vittorio Zaccaria ‐ Dicembre 2009

• Gestione delle eccezioni• I/O• Gestione della memoria (MMU)

Linguaggio assemblatore

• Anche chiamato assembly

Assembly (file di testo)

Assemblatore (e.g. ‘as’)

‐Codici mnemonici‐Etichette simboliche

Vittorio Zaccaria ‐ Dicembre 2009

Codice oggetto Linguaggio Macchina(Comunemente ‘binario’)

Page 3: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

3

Istruzioni (linguaggio macchina)

• Codice operativo– Semplice operazione– Semplice operazione

– Complesso (aritmetica+diverse op. in memoria)

• Operandi– Registri (impliciti o espliciti)

– Memoria (modalita’ diretta o indiretta)

Vittorio Zaccaria ‐ Dicembre 2009

Architetture stack

Architetture ad accumulatore

0 operandi 1 operando

Architetture CISC/RISC

2 o piu’ operandi

Modello di memoria

• Architettura target: 68000M i i di i bil b t• Memoria indirizzabile a byte:– 24 bit di indirizzo (16MB)– 32 bit di indirizzo per architetture successive (68020)

• Interi rappresentati in complemento a 2 (su 2 4 b )

Vittorio Zaccaria ‐ Dicembre 2009

o 4 bytes)• Operazioni su memoria chiamate anche load (caricamento), store (salvataggio)

Page 4: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

4

Endianess

• Ordinamento dei bytes all’interno di una word

• Supponiamo di scrivere all’indirizzo 0 la parola da 16 bit: AABB (store.w 0xAABB  0)

• Bytes effettivamente scritti:

0 1 2 0 1 2

Vittorio Zaccaria ‐ Dicembre 2009

AA BB … …

0 1 2

Big endian (most significant first)

BB AA … …

0 1 2

Little endian (least significant first)

(INTEL)

Endianess 68K

Vittorio Zaccaria ‐ Dicembre 2009

Page 5: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

5

Registri del processore

• Memorie locali al 

n registri di uso generale

byte parola 16 o 32 bit

processore referenziabili direttamente nelle istruzioni in linguaggio 

R0

R1

Rn − 1

puntatore alla pila

banco di registri

Vittorio Zaccaria ‐ Dicembre 2009

macchina SP

PC

contatore di programma registri di uso

speciale

informazioni di stato

Registri 68K

Di (0 ≤ i ≤ 7): registri di dato a 8, 16, 32 bit

Ai (0 ≤ i ≤ 7): resgistri di indirizzo a 16, 32 bit

parola byte

parola doppia

31 15 7 0816

registri di dato

D0

D1

D2

D3

D4

D5

L W B MSB LSB

bitPC: Program Counter a 32 bit (24 bit)SP (= A7): Stack Pointer a 16, 32 bitFP (di solito = A6): Frame Pointer(puntatore all’area di attivazione) a 16, 32 

bitCCR: Condition Code Register (registro dei 

bit di esito ‐ flag) a 8 bitSR St t R i t

puntatore alla pila utente (USP) registro

registri di indirizzo

D6

D7

A0

A1

A2

A3

A4

A5

(FP =) A6

banco di registri

di solito è il registropuntatore ad area

di attivazione

Vittorio Zaccaria ‐ Dicembre 2009

SR: Status Registerregistro di stato (contiene CCR) a16 bit

15 13 10 8 4 0

puntatore alla pila di sistema (SSP) p p ( )

SR

PCregistro

contatore di programma

registro di stato T − bit di tracciaM − bit di modo (U / S)I − bit di livello priorità (I0, I1, I2)

puntatore alla pila SP = A7

X − estensione Z − zero N − negativo V − trabocco C − riporto

bit di esito (o codici di condizione)

CCR (sottoregistro dei bit di esito) 24 bit

7

seleziona traUSP e SSP

Page 6: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

6

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

byte di sistema byte utente (registro CCR, 8 bit)

Status register

C = riporto, carry  vale 1 se l'ultima istruzione ha generato riportoV = overflow vale 1 se l'ultima istruzione ha generato un valore non rappresentabileZ = zero vale 1 se l'ultima istruzione ha generato il valore zero

T - S - - I2 I1 I0 - - - X N Z V C

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Vittorio Zaccaria ‐ Dicembre 2009 ‐ 11 ‐

N = negativo vale 1 se l'ultima istruzione ha generato un valore negativoX = “esteso”  copia del riporto non cambiata da tutte le istruzioni che cambiano C

T = traccia  causa un interrupt dopo ogni istruzione; usato dai debuggerS = system‐mode  le istruzioni privilegiate possono essere eseguite solo quando S=1I  = livello di abilitazione int.  sono abilitati solo gli interrupt > I 

Riporto (carry) e overflow

• Si ha overflow quando il risultato corretto dell’addizione eccede il potere didell’addizione eccede il potere di rappresentazione dei bit a disposizione

• Si può avere overflow senza generare un riporto– Capita quando sommiamo due addendi positivi e otteniamo un risultato negativo

Vittorio Zaccaria ‐ Dicembre 2009

• Si può generare un riporto senza overflow– Capita quando due addendi discordi generano un risultato positivo (si provi a sommare +12 e ‐7)

12

Page 7: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

7

Vettore delle eccezioniL’eccezione numero 2 e’ usata da linux per gestire le eccezioni derivate dalla MMU (Page faults)

Vittorio Zaccaria ‐ Dicembre 2009

Vettore delle eccezioni (cont.)

Vittorio Zaccaria ‐ Dicembre 2009

L’eccezione numero 32 e’ usata da Linux per le system calls

Page 8: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

8

Istruzioni macchina

Vittorio Zaccaria ‐ Dicembre 2009

Istruzioni trattate nel corso

• Sottoinsieme del linguaggio M68000 con t tt i ti hqueste caratteristiche:

– funzionalmente completo

– pochi codici mnemonici

– indirizzamento ortogonale, per quanto possibile

Vittorio Zaccaria ‐ Dicembre 2009

possibile

– anche istruzioni privilegiate

Page 9: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

9

Categorie di istruzioni

• Trasferimento da e verso memoria

• Aritmetico‐logiche

• Salti (condizionati e non)

• I/O

• Istruzioni speciali (controllo del processore)

Vittorio Zaccaria ‐ Dicembre 2009

Tipi di dato

• Formato dei dati trattato dalle operazioni:

• Numerico:– Interi (tipicamente in complemento a 2)

– Floating point

• Indirizzi

B t ( h tt i)

Vittorio Zaccaria ‐ Dicembre 2009

• Byte (anche caratteri)

Page 10: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

10

Formato dell’istruzione

• Suddivisione della codifica in memoria della istruzione che specifica:istruzione che specifica:– Il codice operativo – Indirizzi degli operandi sia in ingresso che in uscita

• L’ISA deve specificare anche i side‐effects d ll’i t i ( d ff tti CCR)

Vittorio Zaccaria ‐ Dicembre 2009

dell’istruzione (ad es. effetti su CCR)• Istruzioni a lunghezza fissa (e.g. 32 bit) o variabile.

(68K) Suffissi per le istruzioni• Indica quanti bit usare per gli operandi• .B = byte  = 8 bit, i meno significativi

W d 16 bit i i ifi ti i (d f lt)• .W = word  = 16 bit, i meno significativi (default)• .L = long word   = 32 bit

MOVE.L #$12345678, D1CLR D0MOVE.B D1, D0 // D0 contiene $00000078 CLR D0

1 0 // 0 i $00005678

Vittorio Zaccaria ‐ Dicembre 2009

MOVE.W D1, D0 // D0 contiene $00005678 CLR D0MOVE.L D1, D0 // D0 contiene $12345678

Page 11: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

11

Modalita’ di indirizzamento

Vittorio Zaccaria ‐ Dicembre 2009

Cosa e’ una modalita’ di indirizzamento

• Specifica come accedere all’operando.

• E’ derivabile dalla codifica dell’istruzione in linguaggio macchina

• L’operando puo’ essere acceduto:– specificando direttamente il valore dell’operando– specificando un registro che contiene l’operando

Vittorio Zaccaria ‐ Dicembre 2009

specificando un registro che contiene l operando– specificando come ottenere l’indirizzo effettivo in memoria dell’operando

Page 12: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

12

Modalita’ di indirizzamento per 68K

• Modalità di indirizzamento:– dati

– istruzioni (destinazioni di salto)

• 68000 ha:– 8 modi indirizzamento di dati

– 4 modi di indirizzamento di istruzioni

Vittorio Zaccaria ‐ Dicembre 2009

– 4 modi di indirizzamento di istruzioni

Ortogonalita’

• Istruzione completamente ortogonale: gli operandi possono assumere tutti o quasi i modi dipossono assumere tutti o quasi i modi di indirizzamento indipendentemente l’uno dall’altro.

• Istruzione semi‐ortogonale: un sottoinsieme degli operandi sono bloccati ad un singolo modo di indirizzamento.

Vittorio Zaccaria ‐ Dicembre 2009

• Istruzione non ortogonale: l’operando puo’ essere acceduto con un singola modalita’ di indirizzamento.

Page 13: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

13

Dati ‐ Indirizzamento immediato

• Il valore dell’operando è specificato nella difi bi i d ll’ i t icodifica binaria dell’ istruzione:

MOVE.L #$12345678, D1

Vittorio Zaccaria ‐ Dicembre 2009

• con costante a 8, 16, 32 bit, specificata in decimale, esadecimale (prefisso $)

Dati ‐ Indirizzamento a registro

• Anche detto indirizzamento diretto

• Specifica direttamente il registro che contiene il valore dell’operando:

MOVE.L D0, D1 MOVE L A0 D1

D1 <= [D0]D1 <= [A0]

Vittorio Zaccaria ‐ Dicembre 2009

MOVE.L A0, D1 D1 <= [A0]

Page 14: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

14

Dati ‐ Indirizzamento indiretto (da registro)

• L’operando è in memoria. Viene specificato l i t i d l’i di iquale registro possiede l’indirizzo 

dell’operando:

• l’istruzione specifica quale registro di indirizzo contiene l’indirizzo dell’operando in memoria

Vittorio Zaccaria ‐ Dicembre 2009

MOVE.L (A0), D1 D1 <= [[A0]]

Dati ‐ Indiretto con post‐incremento

• Come il precedente, ma dopo aver utilizzato l’indirizzo, l’istruzione incrementa il valore del registro di 1, 2 o 4 a seconda 

D1 <= [[A0]]

g ,della dimensione dell’operando:

MOVE.L (A0)+, D1

Vittorio Zaccaria ‐ Dicembre 2009

D1 <= [[A0]]A0 <= [A0]+4

Page 15: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

15

Dati ‐ Indiretto con pre‐decremento

• Come il precedente, ma dopo aver utilizzato l’indirizzo, l’istruzione incrementa il valore del registro di 1, 2 o 4 a seconda g ,della dimensione dell’operando:

MOVE.L -(A0), D1

A0 <= [A0] - 4

Vittorio Zaccaria ‐ Dicembre 2009

A0 <= [A0] - 4 D1 <= [[A0]]

Dati ‐ Indiretto con indice e spiazzamento

• Operando in memoria. Indirizzo somma di un i t (i di ) i tregistro (indice) e un spiazzamento 

(specificato nell’istruzione)

• Offset e’ 16 bit (dotato di segno in complemento a 2) specificato nell’istruzione:

Vittorio Zaccaria ‐ Dicembre 2009

complemento a 2) specificato nell istruzione:

MOVE.L 12(A0), D1 D1 <= [12+[A0]]

Page 16: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

16

Dati ‐ Base, indice e spiazzamento

• Come precedente, ma l’indirizzo dell’operando i i è l di i t (i di )in memoria è la somma di un registro (indice), un indirizzo scalato contenuto in un registro (Di o Ai) e uno spiazzamento a 8 bit.

MOVE L 4(A0 D0 W) D1

Vittorio Zaccaria ‐ Dicembre 2009

MOVE.L 4(A0,D0.W), D1

D1 <= [4+[A0]+[D0.W]]

Dati ‐ Assoluto

• Operando in memoria. L’indirizzo è un valore a 16 32 bit ifi t ll’i t i16 o 32 bit specificato nell’istruzione:

MOVE $1234, D1

D1 <= [$1234]

Vittorio Zaccaria ‐ Dicembre 2009

D1 < [$1234]

Page 17: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

17

Istruzioni – Indiretto da registro

• l’istruzione specifica quale registro di indirizzo ti l’i di i d i i PCcontiene l’indirizzo da caricare in PC:

JMP (A0)

PC <= [A0]

Vittorio Zaccaria ‐ Dicembre 2009

PC < [A0]

Istruzioni – Indiretto, relativo a PC

• l’istruzione specifica quale registro di indirizzo contiene l’indirizzo da caricare in PC:contiene l indirizzo da caricare in PC:

JMP -48(PC)

• In assembly (ove si possono specificare etichette a 

PC <= -48 + [PC]

Vittorio Zaccaria ‐ Dicembre 2009

particolari indirizzi):

JMP ETICHETTA PC <= sp. ETICHETTA+ [PC]

Page 18: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

18

Istruzioni – relativo a PC con base

• Identico a base, indice e spiazzamento (8 bit, l2) I di ’ PCcpl2). Indice e’ PC

JMP -48(PC, A0.L)

PC <= -48 + [PC] + A0.L

Vittorio Zaccaria ‐ Dicembre 2009

JMP CONTINUA(A0)

PC <= SP. CONTINUA + [PC] + A0.L

Istruzioni – assoluto

• Si specifica l’indirizzo assoluto (.W, .L). Non i l l t i tviene calcolata nessuno spiazzamento

JSR INDIRIZZO.L

PC <= INDIRIZZO.L

Vittorio Zaccaria ‐ Dicembre 2009

Page 19: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

19

Istruzioni di trasferimento

Vittorio Zaccaria ‐ Dicembre 2009

Trasferimento ‐Move

• Copia src in dest. Aggiorna bit di esito (N,Z) l CCRnel CCR: 

MOVE src, dest

• Copia src in dest (no A7). NON aggiorna bit di esito nel CCR:

Vittorio Zaccaria ‐ Dicembre 2009

esito nel CCR: MOVEA src, dest

Page 20: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

20

Uso della pila

• Lo stack pointer è conservato nel registro A7

• 2 pile (user e system mode) a seconda del flag S nello status register

• Push di D0O 0 ( 7)

Vittorio Zaccaria ‐ Dicembre 2009

MOVE.W D0, -(A7)

• Pop di D0MOVE.W (A7)+, D0

Trasferimento – Multiple Move

• copia il contenuto di un blocco di registri In imemoria.

MOVEM D1-D3/A0, -(SP)

MOVEM (SP)+, D1-D3/A0

Vittorio Zaccaria ‐ Dicembre 2009

• N.b. SP=A7

Page 21: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

21

Aritmetica e Logica

Vittorio Zaccaria ‐ Dicembre 2009

Istruzioni aritmetiche‐logiche• ADD/SUB/AND/OR/CMP: semiortogonalità (s1 o s2 devono essere registri 

dati)

ADD s1, s2

• ADDI/SUBI/ANDI/ORI/CMPI: semiortogonalità (s1 deve essere costante)

ADDI s1, s2

Vittorio Zaccaria ‐ Dicembre 2009

• ADDA/SUBA/CMPA: semiortogonalità (s1 qualsiasi, s2 registro inidirizzo Ai)

ADDA s1, s2

‐ 42 ‐

Page 22: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

22

Shift aritmetico e logico (registri)

• Shift aritmetico: ASL

• Shift logico:

ASR

ASL D1, D3 ‐> shift aritmetico D3 a sinistra di D1 posizioni

Vittorio Zaccaria ‐ Dicembre 2009

LSL

LSR

LSL D1, D3 ‐> shiftlogico  D3 a sinistra di D1 posizioni

Rotate

• Rotate: ROL

ROR

ROL D1, D3 ‐> ruota D3 a sinistra di D1 posizioni

Vittorio Zaccaria ‐ Dicembre 2009

Page 23: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

23

Istruzioni di salto

• Tipicamente le istruzioni vengono eseguite in sequenzasequenza.

• Possiamo avere 3 casi di deviazione del flusso di controllo:– Salto incondizionato (jump o goto)– Salto condizionato (se una condizione e’ verificata salta altrimenti continua in sequenza)

Vittorio Zaccaria ‐ Dicembre 2009

salta, altrimenti continua in sequenza)– Salta a sub‐routine (salto incondizionato con salvataggio su pila del PC di ritorno)

Istruzioni di salto

• Due sotto‐categorie:

– branch: solo con modalità di indirizzamento relativo a contatore di programma (Bcc, DBcc e BRA)

– jump: con tutte le modalità di indirizzamento 

Vittorio Zaccaria ‐ Dicembre 2009

previste per le istruzioni (JMP e JSR)

Page 24: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

24

Salti condizionati: ccsuffisso cc nome (ing.) significato simbolo

T true condizione sempre verificata

F false condizione mai verificata

CC carry clear non c’è riporto

CS carry set c’è riporto

NE not equal diversità A ≠ B

EQ equal uguaglianza A = B

VC overflow clear non c’è overflow

VS overflow set c’è overflow

Vittorio Zaccaria ‐ Dicembre 2009

PL plus positività o nullità A ≥ 0

MI minus negatività (nullità esclusa) A < 0

GE greater or equal maggioranza in senso lato A ≥ B

LE less or equal minoranza in senso lato A ≤ B

GT greater maggioranza in senso stretto A > B

LT less minoranza in senso stretto A < B

Altre istruzioni di controllo e privilegiate

Vittorio Zaccaria ‐ Dicembre 2009

Page 25: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

25

Altre istruzioni di controlloin modalita’ utente

• NOP (No operation)Stack frame di f(x,y), 

d ( )• LINK A6, # $8 

A6=FPOld Frame Pointer

loc. var 

loc. var

invocata da g(w,z)

Vittorio Zaccaria ‐ Dicembre 2009

A7=SPy

x

Return PC

….

Altre istruzioni di controlloin modalita’ utente

• UNLINK A6Stack frame di f(x,y), 

d ( )

A6=FPOld Frame Pointer

loc. var 

loc. var

invocata da g(w,z)

Vittorio Zaccaria ‐ Dicembre 2009

A7=SPy

x

Return PC

….

Page 26: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

26

Altre istruzioni di controllo

• RTS– Copia il top item dello stack nel PC

– Decrementa lo stack

Vittorio Zaccaria ‐ Dicembre 2009

Istruzioni privilegiate

• TRAP #N– Chiamata supervisore

– Copia PC (long) nel SSP

– Copia SR (word) nel SSP

– Setta modo S=1

– Salta al vettore N della tabella di interruzione

Vittorio Zaccaria ‐ Dicembre 2009

Salta al vettore N della tabella di interruzione

• Move da e verso SR e USP. Generazione di eccezione nel caso modo = U

Page 27: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

27

Istruzioni privilegiate

• RTE– Ripristina SR e PC da SSP

– Genera eccezione nel caso modo=U

• RESET– Resetta il processore

• STOP #M

Vittorio Zaccaria ‐ Dicembre 2009

• STOP #M– Setta SR a M (abilita interrupts)

– Idle in attesa di interrupt

come usare SSP e USP

• Vi sono due stack pointer (USP e SSP).

• Il simbolo SP è sinonimo di A7 (SP==A7).– Quando il processore è in modo U, SP==A7==USP

• Ricorda: è vietato utilizzare A7 (SP) come destinazione

– Quando il processore è in modo S, SP==A7==SSP• è consentito utilizzare A7 (SP) come destinazione

Vittorio Zaccaria ‐ Dicembre 2009

( )

• è consentito nominare USP e corrisponde allo user stack pointer anche se il processore e’ in modo S

‐ 54 ‐

Page 28: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

28

istruzioni di ingresso e uscita 

• Non ci sono istruzioni specifiche di ingresso e ituscita

• Memory mapped I/O

• I registri di interfaccia sono mappati in memoria

• le istruzioni di ingresso e uscita (in altri

Vittorio Zaccaria ‐ Dicembre 2009

• le istruzioni di ingresso e uscita (in altri processori definite come IN e OUT) in 68000 sono delle MOVE privilegiate

‐ 55 ‐

Lunghezza e formato istruzioni

Vittorio Zaccaria ‐ Dicembre 2009

Page 29: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

29

Architettura 68K considerata• Dimensione word di memoria: 16 bit• Dimensione della costante: 8, 16 o 32 bit• Dimensione dello spiazzamento: 8 o 16 bit• Dimensione dell’indirizzo di memoria: 16 o 32 bit• L’istruzione è sempre costituita da:

– Una word di codice operativo– Una o piu’ “word aggiuntive o di estensione” (per costante, indirizzo o spiazzamento)Di i i 5 d

Vittorio Zaccaria ‐ Dicembre 2009

– Dimensione massima: 5 word• Il codice operativo occupa una frazione breve della word di codice operativo

‐ 57 ‐

Istruzioni di trasferimento

• Formato generale

15 12 11 9 8 6 5 3 2 0

• MOVE.B   #$01, Da

• MOVE L #$01234567 Da

codice operativo

modo 1 reg. 1 / aux modo 2 reg. 2 / aux

15 12 11 9 8 6 5 3 2 0

MOVE immed. byte di registro a

#0001 hex

Vittorio Zaccaria ‐ Dicembre 2009

• MOVE.L   #$01234567, Da

‐ 58 ‐

15 12 11 9 8 6 5 3 2 0

MOVE immed. long di registro a

#0123 hex

#4567 hex

Page 30: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

30

Istruzioni di trasferimento

• MOVE.X   $01 (Aa, Db.Yb), $12 (Ac, Ad.Yd)

15 12 11 9 8 6 5 3 2 0

MOVE.X bas ind spi A di registro c

Yb D b 01 hex

Yd A d 12 hex

Vittorio Zaccaria ‐ Dicembre 2009 ‐ 59 ‐

8 bit

Istruzioni di trasferimento

• MOVE.W   #$0123, $456789AB.L

15 12 11 9 8 6 5 3 2 0

MOVE immed. word assoluto long

#0123 hex

4567 hex

89AB hex

Vittorio Zaccaria ‐ Dicembre 2009 ‐ 60 ‐

Page 31: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

31

Istruzioni di controllo

paroladi cod. op

paroleaggiuntive parole

totaliistruzione (all’indirizzo 0) dest( )

JMP (A1) 1 0 1

BRA $12 (PC) 1 0 1

Bcc $12 (PC) 1 0 1

BRA $1234 (PC) 1 1 2

Bcc $1234 (PC) 1 1 2

8 bitspiazzamento

16 bit. di s.1 parola aggiuntiva

Vittorio Zaccaria ‐ Dicembre 2009

JMP $12 (PC, A1) 1 1 2

JMP $1234.W 1 1 2

JMP $12345678.L 1 2 3

‐ 61 ‐

Base + sp. (8 bit) (parola agg.)

Controllo

Vittorio Zaccaria ‐ Dicembre 2009

Page 32: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

32

Riassunto istruzioni

Vittorio Zaccaria ‐ Dicembre 2009

istruzione nome funzionamento in rtl

MOVE.X s, d trasferimento d, esiti ← [s]

MOVEA.Y s, Ai trasferimento Ai ← [s]

MOVEM.Y s, d

trasferimento di blocco

blocco d ← [blocco s]

COME DENOTARE IL BLOCCO DI REGISTRI: esempi

D1-D3/A2-A5vale a dire: D1, D2, D3, A2, A3, A4, A5

D1/D3/A2/A5 vale a dire: D1, D3, A2, A5

D1-D3/A4 vale a dire: D1, D2, D3 e A4

D1-D3/D5-D7/A1 vale a dire: D1, D2, D3, D5, D6, D7, A1

cioè con Da-Db si denota l’intervallo di registri da Da a Db (a e b inclusi), mentre con Da/Db si denotano solo i dueregistri Da e Db; similmente per i registri di indirizzo

COME FUNZIONA MOVEM

d lità di i di i t d t d t MOVEM l l bl di i t i i d l d d t

Vittorio Zaccaria ‐ Dicembre 2009 ‐ 64 ‐

• con modalità di indirizzamento ad autodecremento, MOVEM lavora sul blocco di registri esaminandolo da destra verso sinistra

• l’uso tipico della MOVEM è quello di impilare i registri sullo stack, per salvarne il contenuto in una chiamata a sottoprogramma. Ci deve quindi essere anche la MOVEM “opposta” che spila i registri

MOVEM.Y D1-D3/A4, − (SP) impila il blocco di registri (A4, D3, D2, D1)

MOVEM.Y (SP) +, D1-D3/A4 spila il blocco di registri (D1, D2, D3, A4)

Page 33: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

33

modo

esempio di istruzione funzionamento in RTL

MOVEs, d d ← [s]si immagini di porre d = Dd (0 ≤ d ≤ 7)

di costante (o immediato)

1 MOVE.X #costante, Dd d X ← costante X

di registro

2 MOVE.X Di, DdMOVE.X Ai, Dd

d X ← [Di] Xd X ← [Ai] X

indiretto da registro

3 MOVE.X (Ai), Dd d X ← [[Ai]] X

con autoincremento (indiretto da registro con autoincremento posticipato)

4 MOVE.X (Ai) +, Dd d X ← [[Ai]] Xe poi Ai ← [Ai] + 1 o 2 o 4

con autodecremento (indiretto da registro con autodecremento anticipato)

5 MOVE.X − (Ai), Dd Ai ← [Ai] − 1 o 2 o 4e poi d X ← [[Ai]] X

con indice e spiazzamento

Vittorio Zaccaria ‐ Dicembre 2009

6 MOVE.X spiazz.16 (Ai), Dd d X← [spiazz. 16 + [Ai]] X

con base indice e spiazzamento

7 MOVE.X spiazz. 8 (Ai, Db.Y), DdMOVE.X spiazz. 8 (Ai, Ab.Y), Dd

d X ← [spiazz. 8 + [Ai] + [Db] Y] Xd X← [spiazz. 8 + [Ai] + [Ab] Y] X

assoluto (o diretto)

8 MOVE.X indirizzo.Y, Dd d X ← [indirizzo Y ] X

istruzione nome funzionamento in RTL

ADD.X s, dADDI.X #cost., dADDA.Y s, Ai

addizione (naturale / comp. a due)d X, esiti ← [s] X + [d] Xd X, esiti ← cost. X + [d] XAi Y ← [s] Y + [Ai] Y

SUB.X s, dSUBI.X #cost., dSUBA.Y s, Ai

sottrazione (naturale / comp. a due)d X, esiti ← [d] X − [s] Xd X, esiti ← [d] X − cost. XAi Y ← [Ai] Y − [s] Y

AND.X s, d prodotto logico bit a bit (bitwise)d X, esiti ← [s] X ∧ [d] Xd iti t [d]

,ANDI.X #cost., d prodotto logico bit a bit (bitwise) d X, esiti ← cost. X ∧ [d] X

OR.X s, dORI.X #cost., d somma logica bit a bit (bitwise)

d X, esiti ← [s] X ∨ [d] Xd X, esiti ← cost. X ∨ [d] X

CMP.X s1, s2CMPI.X #cost., s2CMPA.Y s1, Ai

confronto (naturale / comp. a due)esiti ← [s2] X − [s1] Xesiti ← [s2] X − cost. Xesiti ← [Ai] Y − [s1] Y

ASR.X s, dASL.X s, dLSR.X s, dLSL X d

scorrimento aritmetico a dxscorrimento aritmetico a sxscorrimento logico a dx

i t l i

d X, esiti ← scorri arit. [d] X dx [s] pos.d X, esiti ← scorri arit. [d] X sx [s] pos.d X, esiti ← scorri log. [d] X dx [s] pos.

Vittorio Zaccaria ‐ Dicembre 2009

LSL.X s, dROR.X s, dROL.X s, d

scorrimento logico a sxrotazione a dxrotazione a sx

d X, esiti ← scorri log. [d] X sx [s] pos.d X, esiti ← ruota [d] X dx [s] pos.d X, esiti ← ruota [d] X sx [s] pos.

TST.X s esame di parola esiti ← esamina [s] X

NEG.X dNOT.X d

complemento a dueinversione logica (bitwise)

d X, esiti ← complementa a due [d] Xd X, esiti ← inverti logicamente [d] X

CLR.X d azzeramento d X, esiti ← 0

Page 34: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

34

istruzioni di salto ‐ 2

spiazz. etichett

Indirizz

SALTA dest. (Aj)

(PC

)ta

spiazz. (PC, Dq.W/L)etichetta (Dq.W/L)

spiazz. (PC, Aq.W/L)etichetta (Aq.W/L)

o.W/L

JMPJSR dest. = × × × × ×

Vittorio Zaccaria ‐ Dicembre 2009 ‐ 67 ‐

BRABccBSRDBccDBRA

dest. =

vietato

× vietato

istruzioni di salto in dettaglioistruzione nome funzionamento in RTL

JMP dest. salto incondizionato PC ← i.e. dest.

JSR dest. salto (incondizionato) a routineSP ← [SP] − 4[SP] ← [PC]PC ← i.e. dest.

BRAdest.(equivale a BT) salto incondizionato PC ← i.e. dest.

Bcc dest. salto condizionato (cond. cc)

se cc è verificata, alloraPC ← i.e. dest.

altrimentiPC ← [PC] + 4

BSRdest. salto (incondizionato) a routineSP ← [SP] − 4[SP] ← [PC]PC ← i.e. dest.

DBcc dest salto condizionato

se cc non è verificata, alloraDi ← [Di] − 1se [Di] ≠ − 1, allora

PC ← i.e. dest.

Vittorio Zaccaria ‐ Dicembre 2009

DBcc dest. con decremento (cond. cc) altrimentiPC ← [PC] + 4

altrimentiPC ← [PC] + 4

DBRA dest.(equivale a DBF)

salto incondizionatocon decremento

Di ← [Di] − 1se [Di] ≠ − 1, allora

PC ← i.e. dest.altrimenti

PC ← [PC] + 4fine

Page 35: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

35

Altre istruzioni di controlloistruzione nome funzionamento in RTL

NOP nessuna operazione niente

LINK Ai, #cost.(di solito i = , cioè il puntatore all’area di attivazione o frame pointer FP coincide con A6)

collegamento a routine(creazione area di attivazione)

SP ← [SP] − 4[SP] ← [Ai][Ai] ← [SP]SP ← [SP] + cost.

UNLK Ai(idem, di solito i = 6)

rilascio di routine(eliminazione di area di attivazione)

SP ← [Ai]Ai ← [[SP]]SP ← [SP] + 4

RTS rientra da routine PC ← [[SP]]SP [SP] 4

Vittorio Zaccaria ‐ Dicembre 2009

RTS rientra da routine SP ← [SP] + 4

TRAP #cost.(0 ≤ cost. ≤ 15)

chiamata a supervisore(SVC)

SSP ← [SSP] − 4[SSP] ← [PC]SSP ← [SSP] − 2[SSP] ← [SR]bit M di SR ← 1 (attiva modo S)PC ← [base tab. + cost.](cioè PC ← vettore di interruzione)

‐ 69 ‐

istruzioni privilegiateistruzione nome funzionamento in RTL

MOVEs, d trasferimento di registro speciale (SP, SR, USP)

se bit M di SR = 1 (modo S), allorad ← [s]

altrimentiesegui TRAP #cod_istr_priv

se bit M di SR = 1 (modo S) alloraANDI#cost, SR

ORI#cost, SRmascheratura di registro di

stato SR

se bit M di SR = 1 (modo S), alloraSR ← cost. ∧ o ∨ [SR]

altrimentiesegui TRAP #cod_istr_priv

RTErientro da eccezione

(= rientro da interruzione)

se bit M di SR = 1 (modo S), alloraSR ← [[SSP]]SSP← [SSP] + 2PC ← [[SSP]SSP← [SSP] + 4

altrimentiesegui TRAP #cod_istr_priv

bit M di SR 1 ( d S) ll

Vittorio Zaccaria ‐ Dicembre 2009

RESET ripristino del processore

se bit M di SR = 1 (modo S), alloraattiva la linea RESET del bus

altrimentiesegui TRAP #cod_istr_priv

STOP #cost.arresto del processore

e attesa di richiestadi interruzione

se bit M di SR = 1 (modo S), alloraSR ← cost.attendi richiesta interruzionealtrimentiesegui TRAP #cod_istr_priv

Page 36: Instruction Set Architecture - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ACSO/ISA.pdf · Linguaggio assemblatore • Anche chiamato assembly Assembly ... • 68000 ha: –

1/7/2010

36

direttive all’assemblatore ‐ 1 Etichetta Direttiva Argomento / i Funzionamento

N EQU val

Dichiarazione di simbolo. Definisce l’etichetta N e le assegna il valore val. Non genera codice macchina, si limita a definire il simbolo N. Si possono usare più direttive EQU nel programma, una per ogni simbolo che si desidera definire.

Dichiarazione di indirizzo di impianto del segmento di codice, dati, pila,

INIZIO ORG ind

ecc. Definisce l’etichetta INIZIO, le assegna l’indirizzo ind e specifica che il codice, o i dati, o lo spazio pila, ecc, generato in seguito inizia all’indirizzo ind. Non genera codice macchina, si limita a definire dove impiantare il codice, i dati, la pila, ecc, seguente. Si possono usare più direttive ORG nel programma, una per ogni segmento che si desidera impiantare.

DATO DC.X val1, val2, …

Dichiarazione e inizializzazione di dato. Definisce il simbolo DATO associandolo alla cella di memoria corrente, che inizialmente avrà valore val1; prosegue inizializzando anche le parole successive con val2, …; è consentito anche specificare una stringa (vista come successione di byte) tra apici semplici, per esempio `alfa’. Genera codice sotto forma di dati preinizializzati. Ammette segnale di

Vittorio Zaccaria ‐ Dicembre 2009

dimensione di parola X. Si possono usare più direttive DC.X nel programma.

BLOCCO DS.X dim

Dichiarazione di blocco di dati. Definisce il simbolo BLOCCO associandolo alla cella di memoria corrente, e riserva il blocco di parole di dimensione dim., ma non ne preinizilalizza il contenuto. Ammette segnale di dimensione di parola X. Si possono usare più direttive DS.X nel programma.

FINE END etichetta

Chiusura di programma. Termina il codice del programma e specifica tramite l’argomento etichetta l’indirizzo iniziale da dove partire con l’esecuzione. Non genera codice macchina, si limita a specificare al caricatore l’indirizzo di partenza del programma. Nel programma si può usare una sola direttiva END