Corso di Calcolatori Elettronici I A.A

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso di Calcolatori Elettronici I A.A"

Transcript

1 Corso di Calcolatori Elettronici I A.A Subroutines Lezioni 29-31

2 Procedure Ø Definizione:» Procedura o subroutine - Particolare sequenza di istruzioni su dati di volta in volta differenti Ø Problematiche: 1. Collegamento (o linkage) - Modo in cui un calcolatore rende possibili le operazioni di chiamata e di ritorno delle procedure 2. Passaggio dei parametri - Modo in cui il programma chiamante rende disponibili le informazioni di ingresso alla subroutine e la subroutine rende disponibili al programma chiamante le informazioni di uscita

3 Roadmap Ø Meccanismi per il collegamento» Linkage.ppt Ø Meccanismi per lo scambio dei parametri» Parameters.ppt Ø Un meccanismo per il collegamento e lo scambio dei parametri» Stack.ppt

4 Corso di Calcolatori Elettronici I A.A Meccanismi per il collegamento

5 Esecuzione in sequenza lineare Ø Ad ogni istruzione eseguita, il PC viene incrementato per puntare all istruzione successiva i i+1 Move A,R0 Add B,R0 while (TRUE){ Fetch; i+2 Move R0,C } Execute; Segmento di programma A Es: somma di due numeri Dati del programma B C [A] + [B] C

6 Esecuzione con istruzione di salto Ø Ad ogni istruzione eseguita, il PC viene settato in modo da puntare ad un opportuna istruzione (in genere in base al risultato di un confronto) Segmento di programma i i+1 LOOP Move #N,R1 Clear R0 Add NUM,R0 Determina l indirizzo del numero successivo Es: somma di una lista di numeri PC = i, i+1, LOOP,..., LOOP,..., i+k i+k Decrement R1 Branch > 0 LOOP Move R0, SUM NUM1 Dati del programma NUMN SUM

7 I soluzione: Collegamento mediante salto Ø È possibile realizzare una chiamata a sottoprogramma senza fare uso di istruzioni specifiche (JSR, RTS) MAIN Inizio programma principale MOVE.L #RET1,SUBR Salva l indirizzo di ritorno JMP SUBR+4 Salta alla subroutine RET1 Indirizzo di ritorno dalla chiamata MOVE.L #RET2,SUBR Salva l indirizzo di ritorno JMP SUBR+4 Salta alla subroutine RET2 Indirizzo di ritorno dalla chiamata SUBR DS.L 1 Riserva una Long Word per l indirizzo di ritorno MOVE.W D0,D2 Prima istruzione della procedura MOVEA.L SUBR, A0 Carica A0 con l indirizzo di ritorno JMP (A0) Salta all indirizzo contenuto in A0

8 Mappa della memoria MAIN SUBR RET1/RET2 RET1/RET2 MOVE.L #RET1, SUBR JMP SUBR+4 SUBR+4 MOVE.W D0, D2 Codice programma principale RET1 MOVE.L #RET2, SUBR Codice sottoprogramma JMP SUBR+4 MOVEA.L SUBR, A0 RET2 JMP (A0)

9 Ritorno - Schema Memory A JMP (A0) NOP Questa istruzione significa: salta all istruzione puntata dal registro indirizzo A0 L istruzione specifica l operando come (A0)

10 Esercizio Ø Scrivere ed assemblare un programma che usi un istruzione di salto per effettuare una chiamata a sottoprogramma Ø Eseguire il programma sul simulatore e sperimentare:» Il salvataggio dell indirizzo di ritorno nell area codice della subroutine» L evoluzione del PC

11 Soluzione (subjmp.a68) ORG $8000 DC.L MAIN MAIN MOVE.L #RET1,SUBR JMP SUBR+4 Salta alla subroutine RET1 NOP Indirizzo di ritorno dalla chiamata MOVE.L #RET2,SUBR Salva l indirizzo di ritorno JMP SUBR+4 Salta alla subroutine RET2 NOP Indirizzo di ritorno dalla chiamata SUBR DS.L 1 Riserva una Long Word per ind.ritorno MOVE.W D0,D2 Prima istruzione della procedura MOVEA.L SUBR,A0 Carica A0 con l indirizzo di ritorno JMP (A0) Salta all indirizzo contenuto in A0

12 Soluzione (Esecuzione su ASIM)

13 Esercizio Ø Da un analisi dell esecuzione del programma subjmp.a68, ricavare i vantaggi e gli svantaggi della soluzione proposta

14 Soluzione Ø Vantaggi:» Non occorre definire istruzioni nuove» Non occorre dedicare risorse hardware Ø Svantaggi:» Non è possibile memorizzare la subroutine in una ROM Non sarebbe possibile memorizzare l indirizzo di ritorno» Non è possibile effettuare chiamate ricorsive La subroutine è in grado di conservare un solo indirizzo di ritorno

15 II soluzione Ø Collegamento mediante stack:» Gli indirizzi di ritorno vengono salvati in una struttura dati a pila, chiamata stack del processore» Un registro particolare, chiamato Stack Pointer, punta alla cima della pila

16 Pila 0 Move - SP punta all ultima locazione occupata Push: SP Decrement SP Move NEWITEM, (SP) Pop: Move (SP), ITEM Increment SP FONDO 43 Push: Pop: Move NEWITEM, -(SP) Move (SP)+, ITEM 2 k -1

17 Esercizio Ø Riscrivere il programma nell ipotesi di usare uno stack per il collegamento

18 Soluzione (substack.a68) ORG $8000 SUBR MOVE.W D0,D2 MOVEA.L (SP)+,A0 JMP (A0) * Main Program ORG $8010 START MOVE.L #RET1,-(SP) JMP SUBR RET1 NOP RET2 MOVE.L #RET2,-(SP) JMP SUBR NOP END START

19 Soluzione (Esecuzione su ASIM)

20 Ø Vantaggi:» Non occorre definire istruzioni nuove» è possibile effettuare chiamate ricorsive La subroutine è in grado di conservare più indirizzi di ritorno utilizzando lo stack Ø Svantaggi:» Non è possibile memorizzare la subroutine in una ROM Non sarebbe possibile memorizzare l indirizzo di ritorno risorse hardware aggiuntive

21 III soluzione, prima variante Ø Il processore viene dotato di istruzioni apposite:» call_subroutine» return_from_subroutine Ø L indirizzo di ritorno (contenuto del PC) è salvato in un registro, chiamato registro di collegamento o link register Ø Lo schema è identico a quello visto nell esempio discusso, con la differenza che ora l indirizzo di ritorno viene salvato nel Link Register anziché nella locazione di memoria SUBR

22 Esercizio Ø Riscrivere il programma subjmp.a68 nell ipotesi che il processore target sia dotato di registro di collegamento Ø Disegnare la mappa della memoria del codice assemblato Ø Discutere i vantaggi e gli svantaggi della soluzione proposta

23 Soluzione (Pseudo-codice Assembly) MAIN Inizio programma principale JSR SUBR Salva l indirizzo di ritorno nel LR e salta alla subroutine JSR SUBR Salva l indirizzo di ritorno nel LR e salta alla subroutine SUBR MOVE.W D0,D2 Prima istruzione della procedura RTS Salta all indirizzo di ritorno contenuto in LR

24 Soluzione (Mappa della memoria) MAIN SUBR MOVE.W D0, D2 JSR SUBR Codice programma principale RET1 Codice sottoprogramma JSR SUBR RET2 RTS

25 Soluzione (Vantaggi e Svantaggi) Ø Vantaggi:» È possibile memorizzare la subroutine in una ROM» È veloce» Richiede poche risorse hardware Ø Svantaggi:» Non è possibile effettuare chiamate ricorsive (le chiamate ricorsive devono essere gestite esplicitamente dal programmatore)

26 III soluzione, seconda variante Ø Il processore viene dotato di istruzioni apposite:» call_subroutine» return_from_subroutine Ø Gli indirizzi di ritorno vengono salvati nello stack dall istruzione call_subroutine Ø Gli indirizzi di ritorno vengono ripristinati nel PC dall istruzione return_from_subroutine

27 Esercizio Ø Riscrivere il programma nell ipotesi di usare uno stack per il collegamento, avendo a disposizione istruzioni dedicate per la chiamata a procedura e il ritorno da procedura

28 Soluzione (subrts.a68) * Subroutine ORG $8000 SUBR MOVE.W D0,D2 RTS * Main Program ORG $8010 START JSR SUBR NOP JSR NOP END SUBR START

29 Soluzione (Esecuzione su ASIM)

30 Esercizio Ø Disegnare la mappa della memoria del codice assemblato Ø Disegnare l evoluzione dello stack Ø Discutere i vantaggi e gli svantaggi della soluzione proposta

31 Soluzione (Mappa della memoria) MAIN SUBR MOVE.W D0, D2 JSR SUBR Codice programma principale RET1 Codice sottoprogramma JSR SUBR RET2 RTS

32 Soluzione (Vantaggi e Svantaggi) Ø Vantaggi:» È possibile memorizzare la subroutine in una ROM» È possibile effettuare chiamate ricorsive Ø Svantaggi:» Per essere veloce, richiede risorse hardware extra

33 Corso di Calcolatori Elettronici I A.A Meccanismi per il passaggio dei parametri

34 Roadmap Ø Passaggio dei parametri nei registri del processore Ø Passaggio dei parametri in aree di memoria» Soluzione con modulo sorgente unico» Soluzione con due moduli sorgente, con il modulo del chiamante che alloca l area di memoria» Soluzione con due moduli sorgente, con il modulo del chiamato che alloca l area di memoria

35 I soluzione: Parametri in registri Ø È possibile passare i parametri di input/output in registri del processore

36 Parametri in registri Esempio (multregs.a68) ORG $8000 * MULT CLR.W D0 D0 accumula il risultato LOOP ADD.W D1,D0 altrimenti aggiunge MCND al prodotto parziale ADD.W #-1,D2 decrementa il contatore BNE LOOP e ripete il giro RTS esce MAIN MOVE.W MCND,D1 D1 e' il moltiplicando MOVE.W MPY,D2 D2 e' il moltiplicatore JSR MULT MOVE.W D0,PROD PROD DS.W 1 Riserva spazio di memoria per PROD MPY DC.W 3 Definisce il valore di MPY MCND DC.W 4 Definisce il valore di MCND END MAIN

37 Parametri in registri Esecuzione su ASIM

38 Parametri in registri Vantaggi e svantaggi Û È veloce Ü È possibile solo se si dispone di abbastanza registri per contenere tutti i dati Ü Richiede uno stretto accordo tra chiamante e chiamato

39 II soluzione: Parametri in aree di memoria Ø È possibile passare i parametri di input/output in un area di memoria

40 Parametri in area di memoria multlocs.a68-1/3 Ø I parametri di input e output vengono messi in un area di memoria di 3 word Ø Il programma chiamante passa alla subroutine il base address dell area di memoria mettendolo nel registro A0 Ø La subroutine accede ai parametri usando il based addressing ORG $8000 PARMS DS.W3 PRODOFF EQU 0 MPYOFF EQU 2 MCNDOFF EQU 4

41 Parametri in area di memoria multlocs.a68 2/3 ORG $8080 MAIN LEA.L PARMS,A0 MOVE.W MCND,MCNDOFF(A0) MOVE.W MPY,MPYOFF(A0) JSR MULT MOVE.W PRODOFF(A0),PROD $8000 $8002 $8004 ORG $80C0 PROD DS.W 1 MPY DC.W 3 MCND DC.W 4 ORG $8000 PARMS DS.W 3 PRODOFF EQU 0 MPYOFF EQU 2 MCNDOFF EQU 4 Codice programma principale

42 Parametri in area di memoria multlocs.a68 3/3 ORG $8040 MULT MOVE.W MCNDOFF (A0),D1 MOVE.W MPYOFF(A0),D2 CLR.W D0 LOOP ADD.W D1,D0 ADD.W #-1,D2 BNE LOOP MOVE.W D0,PRODOFF(A0) RTS Codice subroutine

43 Parametri in aree di memoria Esecuzione

44 Esempio Divisione con Parametri in memoria Ø È possibile passare i parametri di input/output in aree di memoria Ø Tale area può:» Appartenere al programma chiamato» Appartenere al programma chiamante

45 Parametri in area di memoria div914.a68-1/3 Ø I parametri di input e output vengono messi in un area di memoria di 10 word Ø Il programma chiamante passa alla subroutine il base address dell area di memoria mettendolo nel registro A0 Ø La subroutine accede ai parametri usando il based addressing Ø Gli spiazzamenti sono definiti dal seguente frammento di codice: HIDVND EQU 0 LODVND EQU 4 DVSR EQU 8 QUOT EQU 12 REM EQU 16

46 Parametri in area di memoria div914.a68 2/3 DIVPQ LEA.L PARMS,A0 MOVE.L P,LODVND(A0) CLR.L HIDVND(A0) MOVE.L Q,DVSR(A0) JSR DIVIDEL MOVE.L QUOT(A0),PDIVQ MOVE.L REM(A0),PMODQ *Area Dati ORG $8500 P DC.L 10 Q DC.L 5 PDIVQ DS.L 1 PMODQ DS.L 1 PARMS DS.L 5 Codice programma principale END DIVPQ

47 Parametri in area di memoria div914.a68 3/3 DIVIDEL MOVE.W #32,CNT MOVE.L HIDVND(A0),D0 MOVE.L LODVND(A0),D1 CMP.L DVSR(A0),D0 BCS.S DIVLUP JMP SYSOVF DIVLUP LSL.L #1,D1 ROXL.L #1,D0 BCS.S QUOT1 CMP.L DVSR(A0),D0 BCS.S QUOTOK QUOT1 ADD.L #1,D1 SUB.L DVSR(A0),D0 QUOTOK SUB.W #1,CNT BGT.S DIVLUP MOVE.L D0,REM(A0) MOVE.L D1,QUOT(A0) RTS CNT DS.W 1 SYSOVF EQU $1800 Codice subroutine

48 Parametri in aree di memoria Esecuzione

49 Assemblaggio per moduli div914p1.a68 * Agreement on displacement values HIDVND EQU 0 LODVND EQU 4 DVSR EQU 8 QUOT EQU 12 REM EQU 16 DIVIDEL EQU $8200 ORG $8000 DIVPQ LEA.L PARMS,A0 MOVE.L P,LODVND(A0) CLR.L HIDVND(A0) MOVE.L Q,DVSR(A0) JSR DIVIDEL MOVE.L QUOT(A0),PDIVQ MOVE.L REM(A0),PMODQ Codice programma principale

50 Assemblaggio per moduli div914p2.a68 * Agreement on displacement values HIDVND EQU 0 LODVND EQU 4 DVSR EQU 8 QUOT EQU 12 REM EQU 16 ORG $8200 DIVIDEL MOVE.W #32,CNT RTS CNT DS.W 1 SYSOVF EQU $1800 Codice subroutine

51 Assemblaggio per moduli Esecuzione 1/4

52 Assemblaggio per moduli Esecuzione 2/4

53 Assemblaggio per moduli Esecuzione 3/4

54 Assemblaggio per moduli Esecuzione 4/4

55 Allocazione nel chiamato divp1na.a68 PARMS EQU $8100 DIVIDEL EQU $8400 ORG $8000 DIVPQ LEA.L PARMS,A0 MOVE.L P,LODVND(A0) CLR.L HIDVND(A0) MOVE.L Q,DVSR(A0) JSR DIVIDEL MOVE.L QUOT(A0),PDIVQ MOVE.L REM(A0),PMODQ Codice programma principale ORG $8300 P DC.L 10 Q DC.L 5 PDIVQ DS.L 1 PMODQ DS.L 1 END DIVPQ

56 Allocazione nel chiamato divp2a.a68 ORG $8400 * DIVIDEL MOVE.W #32,CNT MOVE.L D0,REM(A0) MOVE.L D1,QUOT(A0) RTS Codice subroutine ORG $8100 PARMS DS.L 5 CNT DS.W 1 SYSOVF EQU $1800

57 Allocazione nel chiamato Esecuzione 1/2

58 Allocazione nel chiamato Esecuzione 2/2

59 Parametri in aree di memoria Vantaggi e svantaggi Û Se l area di memoria appartiene al chiamante, è possibile memorizzare la subroutine su una ROM Ü È più lento

60 Corso di Calcolatori Elettronici I A.A Passaggio parametri Lezione 29 Università degli Studi di Napoli Federico II Facoltà di Ingegneria

61 Passaggio dei parametri su stack Ø È possibile passare i parametri di input/output in aree organizzate a stack Ø È una forma di allocazione dinamica della memoria Ø I parametri di input, quelli di output e l indirizzo di ritorno vengono messi in un area di memoria organizzata a stack 61

62 Passaggio dei parametri su stack PROGRAMMA CHIAMANTE 1) Riserva spazio sullo stack per i parametri di output 2) Pone sullo stack i parametri di input 3) Salta alla subroutine (indirizzo di ritorno su stack) 4) Preleva i parametri di output dallo stack SUBROUTINE 1) Preleva l indirizzo di ritorno dallo stack (utilizzando l offset relativo allo SP) e lo salva in un registro indirizzi 2) Preleva i parametri di input dallo stack (utilizzando gli offset relativi allo SP) e li copia nei registri dati/indirizzi 3) Effettua la propria elaborazione e calcola i parametri di output 4) Pone i parametri di output sullo stack nelle posizioni per essi riservate (utilizzando gli offset relativi allo SP) 5) Ripulisce lo stack 6) Salta all indirizzo di ritorno 62

63 Passaggio dei parametri su stack - Esempio Scrivere e assemblare un programma che calcola il prodotto scalare fra due vettori utilizzando una subroutine a cui vengono passati in ingresso i vettori V1 e V2 (indirizzo del vettore 4 byte) e la loro dimensione DIM (2 byte). Si adotti il meccanismo di scambio dei parametri tramite stack. 63

64 Passaggio dei parametri su stack - Esempio PROGRAMMA CHIAMANTE ORG $8000 INIZIO ADDA #-4,A7 FINE JMP FINE MOVE.W DIM,-(A7) MOVE.L #V1,-(A7) MOVE.L #V2,-(A7) JSR PRODSCAL MOVE.L (A7)+,RES (1) Riserva spazio sullo stack per i parametri di output (2) Pone sullo stack i parametri di input (3) Salta alla subroutine (indirizzo di ritorno su stack) (4) Preleva i parametri di output dallo stack SP SP SP SP Posizion e inziale 0 N-1 INDIRIZZO DI RITORNO INDIRIZZO V2 INDIRIZZO V1 DIM RES 64 Indirizzi crescenti

65 Passaggio dei parametri su stack - Esempio DEFINIZIONE DEGLI OFFSET RITOFF EQU 0 V2OFF EQU 4 V1OFF EQU 8 DIMOFF EQU 12 RESOFF EQU 14 SP N-1 INDIRIZZO DI RITORNO INDIRIZZO V2 INDIRIZZO V1 DIM RES DIS - Dipartimento di Informatica e Sistemistica- Università 65 di Napoli Indirizzi crescenti

66 Passaggio dei parametri su stack - Esempio PRODSCAL MOVEA.L RIToff(A7),A2 MOVEA.L V2off(A7),A1 MOVEA.L V1off(A7),A0 MOVE.W DIMoff(A7),D0 CLR.L D7 accumulatore delle somme parziali SOMMA MOVE.B (A0)+,D1 MOVE.B (A1)+,D2 MULT MULU D1,D2 effettua la moltiplicazione (unsigned) fra D1 e D2 *e pone il risutato in D2 (operandi di 16 bit -> ris di 32bit) ADD.L D2,D7 CTRL SUB #1,D0 controlla se ho ancora elementi da scorrere BNE SOMMA..se ho ancora elementi da considerare salto a SOMMA ESCI MOVE.W D7,RESoff(A7)..altrimenti esco ADDA.L #RESoff,A7 JMP (A2) ORG $8100 V1 DC.B 0,1,3,2 V2 DC.B 3,2,2,1 DIM DC.W 4 RES DS.L 1 END INIZIO SP 0 N- 1 INDIRIZZO DI RITORNO INDIRIZZO V2 INDIRIZZO V1 DIM RES

67 Passaggio dei parametri su stack con LINK/UNLK PROGRAMMA CHIAMANTE 1) Riserva spazio sullo stack per i parametri di output 2) Pone sullo stack i parametri di input 3) Salta alla subroutine (indirizzo di ritorno su stack) 4) Preleva i parametri di output dallo stack SUBROUTINE 1) Effettua il LINK 2) Preleva l indirizzo di ritorno dallo stack (utilizzando l offset relativo a FP) e lo salva in un registro indirizzi 3) Preleva i parametri di input dallo stack (utilizzando gli offset relativi a FP) e li copia nei registri dati/indirizzi 4) Effettua la propria elaborazione (utilizzando eventualmente variabili locali allocate nello stack frame della subroutine) e calcola i parametri di output 5) Pone i parametri di output sullo stack nelle posizioni per essi riservate (utilizzando gli offset relativi al FP) 6) Effettua l UNLK 7) Ripulisce lo stack 8) Salta all indirizzo di ritorno 67

68 Passaggio dei parametri su stack con LINK/UNLK OPERAZIONE DI LINK LINK An,#<displacement> 0 1) Esegue il push su stack del contenuto del registro indirizzo specificato 2) Il registro indirizzo specificato viene caricato con il nuovo valore dello stack pointer 3) Il displacement (negativo per allocare spazio a una procedura) viene esteso in segno e sommato a SP. Questo valore viene assegnato a SP. 4) Durante l esecuzione SP varia, mentre FP rimane costante SP FP SP An N-1 Variabili locali alla subroutine Vecchio valore di An SP 68

69 Passaggio dei parametri su stack con LINK/UNLK OPERAZIONE DI UNLINK UNLK An 1) Carica il vecchio valore dello stack pointer dal registro An 2) Il registro indirizzo specificato viene caricato con il vecchio valore che era stato salvato sullo stack SP SP FP SP An 0 N-1 Variabili locali alla subroutine Vecchio valore di An Vecchio An SP 69

70 Link/Unlk - Esempio Scrivere e assemblare un programma che calcola il prodotto scalare fra due vettori utilizzando una subroutine a cui vengono passati in ingresso i vettori V1 e V2 (indirizzo del vettore 4 byte) e la loro dimensione DIM (2 byte). Si adotti il meccanismo di scambio dei parametri tramite stack con allocazione di uno stack frame per le variabili locali alla procedura (accumulatore delle somme parziali). 70

71 Link/Unlk- Esempio PROGRAMMA CHIAMANTE ORG $8000 INIZIO ADDA #-4,A7 MOVE.W DIM,-(A7) MOVE.L #V1,-(A7) MOVE.L #V2,-(A7) (1) Riserva spazio sullo stack per i parametri di output (2) Pone sullo stack i parametri di input (3) Salta alla subroutine (indirizzo di ritorno su stack) (4) Preleva i parametri di output dallo stack SP 0 INDIRIZZO DI RITORNO INDIRIZZO V2 INDIRIZZO V1 DIM Indirizzi crescenti JSR PRODSCAL RES MOVE.L (A7)+,RES FINE JMP FINE N-1 71

72 Link/Unlk- Esempio DEFINIZIONE DEGLI OFFSET Dopo l operazione di LINK lo stack assume la configurazione in figura. Gli offset vengono definiti relativamente al LR VAROFF EQU -4 RITOFF EQU 4 V2OFF EQU 8 V1OFF EQU 12 DIMOFF EQU 16 RESOFF EQU 18 SP FP (valore corrente di A6) N-1 VARIABILE LOCALE VECCHIO VALORE A6 INDIRIZZO DI RITORNO INDIRIZZO V2 INDIRIZZO V1 DIM RES

73 Link/Unlk- Esempio SUBROUTINE PRODSCAL LINK A6,#-4 MOVEA.L RIToff(A6),A2 MOVEA.L V2off(A6),A1 MOVEA.L V1off(A6),A0 MOVE.W DIMoff(A6),D0 MOVE 0,VAROFF(A6) SOMMA MOVE.B (A0)+,D1 MOVE.B (A1)+,D2 MULT MULU D1,D2 ADD.L D2, VAROFF(A6) CTRL SUB #1,D0 BNE ESCI MOVE.L VAROFF(A6),RESoff(A6) UNLK A6 ADDA.L #RESoff-4,A7 JMP (A2) SP SP SP N-1 VARIABILE LOCALE VECCHIO VALORE A6 INDIRIZZO DI RITORNO INDIRIZZO V2 INDIRIZZO V1 DIM RES

74 Link/Unlk - Esempio Scrivere e assemblare un programma che conti i valori 0 di una matrice (memorizzata per righe) utilizzando una subroutine a cui vengono passati in ingresso la matrice (indirizzo del primo elemento 4 byte), il numero di righe (2 byte) e di colonne (2 byte). Scrivere e assemblare un programma che conti i valori 0 di una matrice (memorizzata per righe) utilizzando una subroutine a cui vengono passati in ingresso la matrice (indirizzo del primo elemento 4 byte), il numero di righe (2 byte) e di colonne (2 byte) la quale a sua volta richiami una subroutine per il conteggio degli 0 in un vettore (parametri: indirizzo vettore, dimensione) 74

MECCANISMI PER IL PASSAGGIO DEI PARAMETRI

MECCANISMI PER IL PASSAGGIO DEI PARAMETRI MECCANISMI PER IL PASSAGGIO DEI PARAMETRI CALCOLATORI ELETTRONICI I CdL Ingegneria Elettronica (A-I) DIS - Università degli Studi di Napoli Federico II Parametri in registri Realizzare un programma che

Dettagli

Alcuni programmi assembly MC68000

Alcuni programmi assembly MC68000 Corso di Calcolatori Elettronici I Alcuni programmi assembly MC68000 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Dettagli

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri Corso di Calcolatori Elettronici I Subroutine in linguaggio macchina: collegamento e passaggio dei parametri Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso

Dettagli

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri. Sottoprogrammi: richiami

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri. Sottoprogrammi: richiami Corso di Calcolatori Elettronici I Subroutine in linguaggio macchina: collegamento e passaggio dei parametri Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso

Dettagli

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 16. Passaggio di Parametri mediante Aree Dati

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 16. Passaggio di Parametri mediante Aree Dati LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 16 Prof. Rosario Cerbone rosario.cerbone@uniparthenope.it http://digilander.libero.it/rosario.cerbone a.a. 2007-2008 Passaggio di Parametri mediante

Dettagli

L'INDIRIZZAMENTO NEL PROCESSORE MC PARTE 1 -

L'INDIRIZZAMENTO NEL PROCESSORE MC PARTE 1 - L'INDIRIZZAMENTO NEL PROCESSORE MC 68000 - PARTE 1 - CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Modi di indirizzamento Tecniche di indirizzamento:

Dettagli

Passaggio di Parametri per Valore o Indirizzo

Passaggio di Parametri per Valore o Indirizzo Passaggio di Parametri per Valore o Indirizzo Come in C, l assembler permette di passare un dato per valore (copia) o per indirizzo, nel secondo caso rendendo modificabile il dato stesso da dentro una

Dettagli

Introduzione al linguaggio assembly MC68000

Introduzione al linguaggio assembly MC68000 Corso di Calcolatori Elettronici I Introduzione al linguaggio assembly MC68000 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie

Dettagli

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15 LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15 Prof. Rosario Cerbone rosario.cerbone@libero.it http://digilander.libero.it/rosario.cerbone a.a. 2005-2006 L'INDIRIZZAMENTO NEL PROCESSORE MC 68000

Dettagli

Sottoprogrammi in linguaggio assembly del Motorola 68000

Sottoprogrammi in linguaggio assembly del Motorola 68000 Sottoprogrammi in linguaggio assembly del Motorola 68000 Daniele Paolo Scarpazza daniele.scarpazza@elet.polimi.it Politecnico di Milano Ultimo aggiornamento: 10 Maggio 2005 Bibliografia Sezioni 4.9, 5.6

Dettagli

Corso di Calcolatori Elettronici I A.A Sottoprogrammi. ing. Alessandro Cilardo

Corso di Calcolatori Elettronici I A.A Sottoprogrammi. ing. Alessandro Cilardo Corso di Calcolatori Elettronici I A.A. 2012-2013 Sottoprogrammi ing. Alessandro Cilardo Accademia Aeronautica di Pozzuoli Corso Pegaso V GArn Elettronici Sottoprogrammi E utile e spesso necessario scomporre

Dettagli

Modi di indirizzamento del processore MC68000 (parte prima)

Modi di indirizzamento del processore MC68000 (parte prima) Corso di Calcolatori Elettronici I Modi di indirizzamento del processore MC68000 (parte prima) Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso di Laurea

Dettagli

Modi di indirizzamento del processore MC68000 (parte prima)

Modi di indirizzamento del processore MC68000 (parte prima) Corso di Calcolatori Elettronici I Modi di indirizzamento del processore MC68000 (parte prima) Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Modello di programmazione

Dettagli

Corso di Calcolatori Elettronici I Sottoprogrammi ing. Alessandro Cilardo

Corso di Calcolatori Elettronici I Sottoprogrammi ing. Alessandro Cilardo Corso di Calcolatori Elettronici I Sottoprogrammi ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica Sottoprogrammi E utile e spesso necessario scomporre i programmi in sottoprogrammi Sottoprogramma

Dettagli

Modi di indirizzamento

Modi di indirizzamento Corso di Calcolatori Elettronici I Modi di indirizzamento ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica Modi di indirizzamento Indicano come la CPU accede agli operandi usati dalle proprie

Dettagli

Invocazione di funzioni. Passaggio parametri Creazione record di attivazione (anche chiamato stack frame o area di attivazione)

Invocazione di funzioni. Passaggio parametri Creazione record di attivazione (anche chiamato stack frame o area di attivazione) Invocazione di funzioni Passaggio parametri Creazione record di attivazione (anche chiamato stack frame o area di attivazione) Passaggio parametri F(a,b,c) { } Z = g(x, y, z) Record di attivazione o registri

Dettagli

Pseudo-operatori. Lo pseudo-operatore ORG

Pseudo-operatori. Lo pseudo-operatore ORG Pseudo-operatori Viene usato per inizializzare il Program Location Counter (PLC) Sintassi: ORG $HEXADDR Lo pseudo-operatore END Viene usato per terminare il processo di assemblaggio e saltare all entry

Dettagli

15 April LABORATORIO 04 PROCEDURE STACK. CHIAMATA A PROCEDURE I. Frosio

15 April LABORATORIO 04 PROCEDURE STACK. CHIAMATA A PROCEDURE I. Frosio 15 April 2011 05 LABORATORIO 04 PROCEDURE STACK CHIAMATA A PROCEDURE I. Frosio 1 SOMMARIO Procedure Stack Chiamata a procedure 2 PERCHÈ LE PROCEDURE? 15 April 2011 Main Proc3 Proc2 Proc1 Programmazione

Dettagli

Assembly (3): le procedure

Assembly (3): le procedure Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:

Dettagli

MC68000: programmazione assembly

MC68000: programmazione assembly Corso di Calcolatori Elettronici I MC68000: programmazione assembly Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Dettagli

Modi di indirizzamento del processore MC68000 (parte prima)

Modi di indirizzamento del processore MC68000 (parte prima) Corso di Calcolatori Elettronici I A.A. 2011-2012 Modi di indirizzamento del processore MC68000 (parte prima) Lezione 21 Prof. Antonio Pescapè Università degli Studi di Napoli Federico II Facoltà di Ingegneria

Dettagli

Le procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I)

Le procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I) Le procedure L insieme delle istruzioni (4) Architetture dei Calcolatori (lettere A-I) In ogni linguaggio di programmazione si struttura il proprio codice usando procedure (funzioni, metodi, ) L utilizzo

Dettagli

Assembly (3): le procedure

Assembly (3): le procedure Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 13 1/23 Chiamata

Dettagli

Assembly IV Le procedure

Assembly IV Le procedure rchitettura degli Elaboratori e delle Reti Lezione 14 ssembly IV Le procedure Proff.. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:

Dettagli

Corso di Calcolatori Elettronici I A.A Indirizzamento Lezione 27-28

Corso di Calcolatori Elettronici I A.A Indirizzamento Lezione 27-28 Corso di Calcolatori Elettronici I A.A. 2010-2011 Indirizzamento Lezione 27-28 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Modello di programmazione del processore MC68000 31 16

Dettagli

programma in linguaggio C esercizio n. 5 linguaggio macchina prima parte codifica in linguaggio macchina

programma in linguaggio C esercizio n. 5 linguaggio macchina prima parte codifica in linguaggio macchina esercizio n. 5 linguaggio macchina prima parte codifica in linguaggio macchina Si deve tradurre in linguaggio macchina simbolico (linguaggio assemblatore) 68000 il programma (main e funzione funz) riportato

Dettagli

Nuovo Corso di Calcolatori Elettronici I. Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II

Nuovo Corso di Calcolatori Elettronici I. Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II Nuovo Corso di Calcolatori Elettronici I Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II Libro di testo:» B. Fadini, C. Savy: Fondamenti di Informatica II, Liguori

Dettagli

Fetch Decode Execute Program Counter controllare esegue prossima

Fetch Decode Execute Program Counter controllare esegue prossima Stored Program Istruzioni sono stringhe di bit Programmi: sequenze di istruzioni Programmi (come i dati) memorizzati in memoria La CPU legge le istruzioni dalla memoria (come i dati) Ciclo macchina (ciclo

Dettagli

Convenzioni di chiamata a procedure

Convenzioni di chiamata a procedure Università degli Studi di Milano Laboratorio di Architettura degli Elaboratori II Corso di Laurea in Informatica, A.A. 2016-2017 Convenzioni di chiamata a procedure Nicola Basilico Dipartimento di Informatica

Dettagli

Processore M68000: ulteriori istruzioni

Processore M68000: ulteriori istruzioni Corso di Calcolatori Elettronici I Processore M68000: ulteriori istruzioni ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica Shift LSL, LSR shift logico a sinistra/destra Esempio: LSL.W #2,D2

Dettagli

ARM: stack e subroutine

ARM: stack e subroutine ARM: stack e subroutine 05.d Le istruzioni di accesso allo stack L istruzione di chiamata a subroutine Gestione degli stack frame Istruzione di store multiplo (STM Le istruzioni LDR e STR operano su parole

Dettagli

Modi di indirizzamento parte 1. Modello di programmazione del processore MC68000

Modi di indirizzamento parte 1. Modello di programmazione del processore MC68000 Corso di Calcolatori Elettronici I A.A. 2010-2011 Modi di indirizzamento parte 1 Lezione 21 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso di Laurea in

Dettagli

Esercizio riassuntivo di traduzione e assemblaggio da linguaggio C ad assembly Motorola

Esercizio riassuntivo di traduzione e assemblaggio da linguaggio C ad assembly Motorola Esercizio riassuntivo di traduzione e assemblaggio da linguaggio C ad assembly Motorola 68000. Ultima modifica: 10 Maggio 2005. Autore: Daniele Paolo Scarpazza. Per segnalare eventuali difficoltà o problemi,

Dettagli

Introduzione alla programmazione assembly

Introduzione alla programmazione assembly Corso di Calcolatori Elettronici I A.A. 2010-2011 Introduzione alla programmazione assembly Lezione 21 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Organizzazione Motorola 68000 Holds

Dettagli

Modi di indirizzamento del processore MC68000 (parte seconda)

Modi di indirizzamento del processore MC68000 (parte seconda) Corso di Calcolatori Elettronici I Modi di indirizzamento del processore MC68000 (parte seconda) Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso di Laurea

Dettagli

Architetture dei Calcolatori

Architetture dei Calcolatori Architetture dei Calcolatori Lezione 8 -- 01/12/2011 Procedure Emiliano Casalicchio emiliano.casalicchio@uniroma2.it Create da: F. Lo Presti Modificate da: E.Casalicchio Le procedure q In ogni linguaggio

Dettagli

Convenzioni per la chiamata a procedure

Convenzioni per la chiamata a procedure Università degli Studi di Milano Corso di Laurea in Informatica, A.A. 2017-2018 Convenzioni per la chiamata a procedure Homepage del corso Turno A Nicola Basilico Dipartimento di Informatica Via Comelico

Dettagli

Esercizi. Assembly. Alessandro A. Nacci ACSO 2014/2014

Esercizi. Assembly. Alessandro A. Nacci ACSO 2014/2014 Esercizi Assembly Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 1 Esercizio 1 Si deve tradurre in linguaggio macchina simbolico (linguaggio assemblatore) 68000 il programma C (programma

Dettagli

LE STRUTTURE IN PROGRAMMAZIONE ASSEMBLER

LE STRUTTURE IN PROGRAMMAZIONE ASSEMBLER LE STRUTTURE IN PROGRAMMAZIONE ASSEMBLER CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Istruzioni di selezione Linguaggio ad alto livello Assembler

Dettagli

Architettura del processore MC 68000

Architettura del processore MC 68000 Architettura del processore MC 68000 Registri generali D0-D7, A0-A7 PC 16 x 32 ALU 32 32 TEMP 32 EAR IR Control unit 16 SR 8 8 CCR Interfaccia memoria ed I/O Bus di memoria e di I/O Modello di programmazione

Dettagli

Istruzioni di Controllo del Flusso Istruz. di Controllo di Flusso

Istruzioni di Controllo del Flusso Istruz. di Controllo di Flusso Istruzioni di Controllo del Flusso Istruz. di Controllo di Flusso Salto Non Condizionato Salto Condizionato JMP jump BRA branch non condizionato BEQ branch if Equal BNE branch if Not Equal BCS branch if

Dettagli

Gestione delle subroutine. Appunti di Sistemi per la cl. IV Dinf A cura del prof. Ing. Mario Catalano

Gestione delle subroutine. Appunti di Sistemi per la cl. IV Dinf A cura del prof. Ing. Mario Catalano Gestione delle subroutine Appunti di Sistemi per la cl. IV Dinf A cura del prof. Ing. Mario Catalano Vantaggi delle subroutines In maniera analoga alle funzioni/metodi dei linguaggi di alto livello, anche

Dettagli

Il processore Motorola (MC68000)

Il processore Motorola (MC68000) LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 9 Prof. Rosario Cerbone rosario.cerbone@uniparthenope.it http://digilander.libero.it/rosario.cerbone a.a. 2008-2009 Il processore Motorola 68000 (MC68000)

Dettagli

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 13

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 13 LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 13 Prof. Rosario Cerbone rosario.cerbone@libero.it http://digilander.libero.it/rosario.cerbone a.a. 2005-2006 Il processore Motorola 68000 (MC68000)

Dettagli

Modi di indirizzamento del processore MC68000 parte 1

Modi di indirizzamento del processore MC68000 parte 1 Corso di Calcolatori Elettronici I Modi di indirizzamento del processore MC68000 parte 1 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle

Dettagli

Istruzioni di trasferimento dati

Istruzioni di trasferimento dati Istruzioni di trasferimento dati Leggere dalla memoria su registro: lw (load word) Scrivere da registro alla memoria: sw (store word) Esempio: Codice C: A[8] += h A è un array di numeri interi Codice Assembler:

Dettagli

Architettura di un calcolatore: Introduzione parte 2

Architettura di un calcolatore: Introduzione parte 2 Corso di Calcolatori Elettronici I Architettura di un calcolatore: Introduzione parte 2 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle

Dettagli

Calcolatore: sottosistemi

Calcolatore: sottosistemi Calcolatore: sottosistemi Processore o CPU (Central Processing Unit) Memoria centrale Sottosistema di input/output (I/O) CPU I/O Memoria Calcolatore: organizzazione a bus Il processore o CPU Unità di controllo

Dettagli

Introduzione al linguaggio assembly

Introduzione al linguaggio assembly Corso di Calcolatori Elettronici I Introduzione al linguaggio assembly ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica Riepilogo PC R 0 MA R 1 R 2 R 3 IR MB read memoria O 1 O 2 op ALU

Dettagli

Programmazione Assembly. RISC e CISC Esecuzione sequenziale Esecuzione condizionata Cicli Subroutine

Programmazione Assembly. RISC e CISC Esecuzione sequenziale Esecuzione condizionata Cicli Subroutine Programmazione Assembly RISC e CISC Esecuzione sequenziale Esecuzione condizionata Cicli Subroutine RISC e CISC Possiamo classificare le architetture di microprocessore in due classi principali RISC CISC

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

#define N = 5. / funzione funz / int funz (int a, int b) { return (a + r) b; } / fine funzione / programma in linguaggio C

#define N = 5. / funzione funz / int funz (int a, int b) { return (a + r) b; } / fine funzione / programma in linguaggio C esercizio n. 5 linguaggio macchina prima parte codifica in linguaggio macchina Si deve tradurre in linguaggio macchina simbolico (linguaggio assemblatore) 68000 il programma (main e funzione funz) riportato

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Architettura di un calcolatore: introduzione

Architettura di un calcolatore: introduzione Corso di Calcolatori Elettronici I Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie

Dettagli

Istruzioni di controllo del flusso

Istruzioni di controllo del flusso Istruzioni di controllo del flusso Il flusso di esecuzione è normalmente sequenziale Le istruzioni di controllo cambiano la prossima istruzione da eseguire Istruzioni di salto condizionato branch if equal

Dettagli

Introduzione al linguaggio assembly

Introduzione al linguaggio assembly Corso di Calcolatori Elettronici I Introduzione al linguaggio assembly Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Dettagli

Introduzione al linguaggio macchina. Istruzione l/m

Introduzione al linguaggio macchina. Istruzione l/m Corso di Calcolatori Elettronici I Introduzione al linguaggio macchina Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly Chiamata a procedura PH cap. 2.7 e app. A.6 1 Chiamata a procedura in C int prod (int x, int y) { int out; out = x * y; return out; } f = f + 1; if (f == g) res = prod(f,g); else

Dettagli

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano Architettura degli Elaboratori Lezione 20 ISA (Instruction Set Architecture) della CPU MIPS Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano L16-20 1/29 Linguaggio

Dettagli

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano Architettura degli Elaboratori Lezione 20 ISA (Instruction Set Architecture) della CPU MIPS Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano L16-20 1/29 Linguaggio

Dettagli

Architettura dei calcolatori e sistemi operativi. Sottoprogrammi e MIPS. Espressioni algebriche. Capitolo 2 P&H

Architettura dei calcolatori e sistemi operativi. Sottoprogrammi e MIPS. Espressioni algebriche. Capitolo 2 P&H Architettura dei calcolatori e sistemi operativi Sottoprogrammi e MIPS Espressioni algebriche Capitolo 2 P&H Sottoprogrammi Modello di chiamata Area di attivazione Calcolare un espressione algebrica 2

Dettagli

Strutture di controllo del flusso di esecuzione in assembler. MC68000: Status Register

Strutture di controllo del flusso di esecuzione in assembler. MC68000: Status Register Corso di Calcolatori Elettronici I A.A. 2010-2011 Strutture di controllo del flusso di esecuzione in assembler Lezione 25 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di

Dettagli

Traduzione da C a Catena di compilazione

Traduzione da C a Catena di compilazione Traduzione da C a 68000 Vittorio Zaccaria Dicembre 2009 Catena di compilazione utilizzo di linguaggi intermedi di(ir) Analisi sintattica e trattamento degli errori Generazione del codice macchina linguaggio

Dettagli

Processore Danilo Dessì. Architettura degli Elaboratori.

Processore Danilo Dessì. Architettura degli Elaboratori. Processore 8088 Architettura degli Elaboratori Danilo Dessì danilo_dessi@unica.it Subroutine Anche nel linguaggio assemblativo è possibile suddividere un programma in subroutine Per invocare una subroutine

Dettagli

Architettura del set di istruzioni (ISA)

Architettura del set di istruzioni (ISA) Architettura del set di istruzioni (ISA) Calcolatori Elettronici-Ingegneria Telematica 1 Instruction Set Architecture Software Hardware Application (Netscape) Compiler Assembler Processor Memory Digital

Dettagli

Fondamenti di programmazione in linguaggio assembly del Motorola 68000

Fondamenti di programmazione in linguaggio assembly del Motorola 68000 Fondamenti di programmazione in linguaggio assembly del Motorola 68000 Daniele Paolo Scarpazza daniele.scarpazza@elet.polimi.it Politecnico di Milano Ultimo aggiornamento: 10 Maggio 2005 Bibliografia Libro

Dettagli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli Calcolatori Elettronici Lezione A4 Programmazione a Moduli Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Sommario Programmazione a moduli Programmi con linguaggi misti Tempo

Dettagli

Gestione dei sottoprogrammi. temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma

Gestione dei sottoprogrammi. temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma Gestione dei sottoprogrammi temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma programma CALL sottoprogramma RETURN Subroutine linkage CALL: viene salvato l indirizzo di

Dettagli

ASSEMBLER 68K parte 1

ASSEMBLER 68K parte 1 ASSEMBLER 68K parte 1 CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Supporti didattici Fadini Savy, Fond. Inf. 2 parte. III, cap.

Dettagli

Rappresentazione dell informazione

Rappresentazione dell informazione Rappresentazione dell informazione Codifica dei numeri Rappresentazioni in base 2, 8, 10 e 16 Rappresentazioni M+S, C1 e C2 Algoritmi di conversione di base Algoritmi di somma, moltiplicazione e divisione

Dettagli

Il linguaggio macchina

Il linguaggio macchina Il linguaggio macchina Un istruzione in linguaggio macchina è, sul piano astratto, una tripla strutturata: i = (f, P1, P2) ove: f F insieme dei codici operativi del processore, cioè delle operazioni elementari

Dettagli

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche 3 tipi di istruzioni macchina Linguaggio macchina e assembler 1) trasferimento tra RAM e registri di calcolo della CPU 2) operazioni aritmetiche: somma, differenza, moltiplicazione e divisione 3) operazioni

Dettagli

Università degli Studi di Cassino

Università degli Studi di Cassino Corso di Gestione dei sottoprogrammi Anno Accademico 2007/2008 Francesco Tortorella Gestione dei sottoprogrammi temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma programma

Dettagli

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi Corso di Calcolatori Elettronici I A.A. 2012-2013 Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e

Dettagli

Corso di Architettura (Prof. Scarano) 10/05/2002

Corso di Architettura (Prof. Scarano) 10/05/2002 Lezione 0 Il Set di Istruzioni (6) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Le procedure Prima della chiamata di una procedura In ogni linguaggio di

Dettagli

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando Un altro tipo di indirizzamento L insieme delle istruzioni (3) Architetture dei Calcolatori (lettere A-I) Tipi di indirizzamento visti finora Indirizzamento di un registro Indirizzamento con registro base

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Metodi di indirizzamento

Metodi di indirizzamento Testo di rif.to: [Congiu] 4.3 (pg. 138 148) 02.b Metodi di indirizzamento Indirizzamento immediato Indirizzamento di registro Indirizzamenti in memoria Metodi di indirizzamento 1 Gli indirizzi degli operandi

Dettagli

CPUSim. Laboratorio 30/11/2016

CPUSim. Laboratorio 30/11/2016 CPUSim Laboratorio 30/11/2016 Tommaso Padoan e-mail: padoan@math.unipd.it CPUsim Scaricare il simulatore: www.math.unipd.it/~sperduti/architettura1.html scorrere fino a sezione Simulatori, aprire la pagina

Dettagli

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A.

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A. < < } } Lezione 5 e 6 Accesso a memoria A questo livello di astrazione, la memoria viene vista come un array di byte Per ogni richiesta di un dato ad un certo indirizzo, la CPU ottiene un numero di byte

Dettagli

Vari modi di specificare l indirizzo degli operandi

Vari modi di specificare l indirizzo degli operandi Modi di indirizzamento Capitolo 11 Vari modi di specificare l indirizzo degli operandi Immediato Diretto Indiretto Registro Registro indiretto Spiazzamento Pila 1 Indirizzamento immediato L operando è

Dettagli

Introduzione al linguaggio assembly

Introduzione al linguaggio assembly Corso di Calcolatori Elettronici I A.A. 2011-2012 Introduzione al linguaggio assembly Lezione 20 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Il linguaggio Assembly È funzionalmente

Dettagli

Introduzione al linguaggio assembly del processore Motorola 68000

Introduzione al linguaggio assembly del processore Motorola 68000 Corso di Calcolatori Elettronici I Introduzione al linguaggio assembly del processore Motorola 68000 ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica 68000: Modello di programmazione 31

Dettagli

Modi di indirizzamento

Modi di indirizzamento Vari modi di specificare l indirizzo degli operandi Modi di indirizzamento Capitolo 11 Immediato Diretto Indiretto Registro Registro indiretto Spiazzamento Pila 1 2 Indirizzamento immediato L operando

Dettagli

PD-32. Connessione di dispositivi esterni (periferiche)

PD-32. Connessione di dispositivi esterni (periferiche) PD-32 Seconda parte Connessione di dispositivi esterni (periferiche) Ogni dispositivo di I/O è connesso al PD-32 mediante un interfaccia suddivisa in una parte dipendente dal dispositivo ed un altra indipendente

Dettagli

Richiami sull architettura del processore MIPS a 32 bit

Richiami sull architettura del processore MIPS a 32 bit Caratteristiche principali dell architettura del processore MIPS Richiami sull architettura del processore MIPS a 32 bit Architetture Avanzate dei Calcolatori Valeria Cardellini E un architettura RISC

Dettagli

Università degli Studi di Cassino e del Lazio Meridionale

Università degli Studi di Cassino e del Lazio Meridionale di Cassino e del Lazio Meridionale Corso di Gestione dei sottoprogrammi Anno Accademico Francesco Tortorella Gestione dei sottoprogrammi temporaneo passaggio del controllo dal programma in esecuzione ad

Dettagli

Fondamenti di Informatica B

Fondamenti di Informatica B Fondamenti di Informatica B Lezione n. 11 Alberto Broggi Gianni Conte A.A. 2005-2006 Fondamenti di Informatica B Lezione n.11n ARCHITETTURA INTERNA ARCHITETTURA ESTERNA CODICE MACCHINA MODI DI INDIRIZZAMENTO

Dettagli

Introduzione. Architettura

Introduzione. Architettura Introduzione Questo simulatore fornisce una versione semplificata dell assemblatore sfruttato dal processore 8088 trasformando il codice inserito in input in codice eseguibile e ne simula l esecuzione

Dettagli

Gestione dell I/O. Nuovo Corso di Calcolatori Elettronici I. Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II

Gestione dell I/O. Nuovo Corso di Calcolatori Elettronici I. Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II Gestione dell I/O Nuovo Corso di Calcolatori Elettronici I Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II Roadmap Ø Modello architetturale» Struttura a bus singolo

Dettagli

Assembly MIPS: le procedure

Assembly MIPS: le procedure Architettura degli Elaboratori e delle Reti Assembly MIPS: le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Informatica Università degli Studi di Milano 1/40 Chiamata a procedura: esempio

Dettagli