L assembler 80x86. Corso di Calcolatori Elettronici II Prof. Giulio Iannello

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "L assembler 80x86. Corso di Calcolatori Elettronici II Prof. Giulio Iannello"

Transcript

1 L assembler 80x86 Corso di Calcolatori Elettronici II Prof. Giulio Iannello 6OLGHDFXUDGL6LPRQ3LHWUR5RPDQR Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II

2 I sottoprogrammi: roadmap L utilizzo delle subroutine per la realizzazione di programmi modulari Scambio di informazioni tra programma chiamante e programma chiamato» &DOOLQJFRQYHQWLRQV» Come interfacciare programmi assembler e programmi C 6WDQGDUG&FDOOLQJFRQYHQWLRQV Esempi pratici con QHWZLGH DVVHPEOHU

3 L ind irizzam ento ind iretto in assem bler I registri funzionano da SXQWDWRUL Notazione:» Il registro è racchiuso tra parentesi quadre: >5HJ@ Esempi: mov ax, [Data] ; normal direct memory addressing of a word mov ebx, Data ; ebx = & Data mov ax, [ebx] ; ax = *ebx La terza istruzione legge una parola, a partire dall indirizzo memorizzato in HE[

4 Registri com e puntatori Ciò a cui punta un registro è determinato esclusivamente dall istruzione adoperata» I registri non hanno un WLSR a differenza delle variabili nei linguaggi di alto livello» E compito esclusivo del programmatore assicurarsi che l utilizzo del registro come puntatore sia corretto In assembly 80x86, tutti i registri JHQHUDOSXUSRVHa 32 bit ($;(%;(&;(';, nonché i registri indice (6, (',, possono essere usati con l indirizzamento indiretto

5 Chiamata a sottoprogramma Un sottoprogramma è un unità di codice indipendente, che può essere richiamata da diverse parti di un medesimo programma Una semplice tecnica per l invocazione di sottoprogrammi fa uso dei salti:» Dovendo funzionare in generale, è necessario fare in modo che il sottoprogramma possa essere richiamato da diversi punti all interno del programma chiamante: il ritorno dal sottoprogramma non può fare riferimento ad una etichetta prefissata» Si utilizza la IRUPDLQGLUHWWD dell istruzione MPS Il valore di ritorno è contenuto in un registro, al quale si accede tramite indirizzamento indiretto

6 Un semplice sottoprogramma JHWBLQW usa una semplice convenzione:» HE[contiene l indirizzo della double word da memorizzare» HF[contiene l indirizzo dell istruzione del programma chiamante a cui fare ritorno ; subprogram get_int ; Parameters: ; ebx - address of dword to store integer into ; ecx - address of instruction to return to ; Notes: ; value of eax is destroyed get_int: call read_int mov [ebx], eax ; store input into memory jmp ecx ; jump back to caller

7 Il programma principale (1/ 4 ) %include "asm_io.inc" segment.data prompt1 db "Enter a number: ", 0 prompt2 db "Enter another number: ", 0 outmsg1 db "You entered ", 0 outmsg2 db " and ", 0 outmsg3 db ", the sum of these is ", 0 segment.bss ; These labels refer to double words used to store the inputs input1 resd 1 input2 resd 1

8 Il programma principale (2/ 4 ) segment.text global asm_main asm_main: enter 0,0 ; setup routine pusha 1%FKLDPDWDDJHWBLQW mov eax, prompt1 ; print out prompt call print_string ret1: mov ebx, input1 ; store address of input1 in ebx mov ecx, ret1 ; store return address into ecx jmp short get_int ; read integer mov eax, prompt2 ; print out prompt call print_string

9 Il programma principale (3/ 4 ) 1%LQGLUL]]RGLULWRUQR mov ebx, input2 mov ecx, $ + 7 ; ecx = this address + 7 jmp short get_int mov eax, [input1] ; eax = dword at input1 add eax, [input2] ; eax += dword at input2 mov ebx, eax ; ebx = eax ; next print out result message as series of steps mov eax, outmsg1 call print_string ; print out first message mov eax, [input1] call print_int ; print out input1 mov eax, outmsg2 call print_string ; print out second message

10 Il programma principale (4/ 4 ) mov eax, [input2] call print_int ; print out input2 mov eax, outmsg3 call print_string ; print out third message mov eax, ebx call print_int ; print out sum (ebx) call print_nl ; print new-line popa mov eax, 0 ; return back to C leave ret

11 Un estratto del file di OLVWLQJ %$ BB[ ] mov ebx, input A B9[ ] mov ecx, $ F EB53 jmp short get_int A1[ ] mov eax, [input1] [ ] add eax, [input2] C 89C3 mov ebx, eax......

12 Consid erazioni Con la tecnica esposta sono possibili due alternative:» Definire un etichetta per ogni chiamata a sottoprogramma: Es: UHW nell esempio precedente» Calcolare DSULRUL l indirizzo dell istruzione cui fare ritorno: Es: nell esempio precedente Entrambi i metodi sono poco eleganti:» Una soluzione migliore è rappresentata dall utilizzo dello VWDFN

13 Lo stack Una lista /DVW,Q)LUVW2XWmessa a disposizione del programmatore assembler Contenuta nella memoria Una struttura dati su cui sono definite due operazioni:» Inserimento: SXVK» Estrazione: SRS Il registro 666WDFN 6HJPHQW specifica il segmento che contiene lo stack (solitamente lo stesso segmento in cui sono contenuti i dati) Il registro (636WDFN 3RLQWHUcontiene l indirizzo del dato situato in cima allo stack

14 Push e Pop Push:» Inserisce una double word nello stack Sottrae 4 da (63 Memorizza la double word all indirizzo contenuto in (63 ( >(63@ Pop:» Legge la double word memorizzata in >(63@» Aggiunge 4 ad (63 Nell 80x86 esistono le istruzioni:» SXVKDSXVKDOO salva sullo stack il contenuto dei registri ($;(%;(&;(';(6,(', HG(%3» SRSD SRSDOO Ripristina il valore di tali registri

15 Le istru zioni FDOOe UHW Utilizzate per semplificare la chiamata a sottoprogrammi con l ausilio dello stack» FDOO Salva sullo stack SXVK l indirizzo dell istruzione di ritorno Effettua un salto incondizionato ad un sottoprogramma» UHW Preleva un indirizzo dallo stack Salta all indirizzo prelevato

16 Utilizzo di FDOO e UHW Nel programma dell esempio precedente:» Il blocco del programma chiamante mov ebx, input1 ; store address of input1 in ebx mov ecx, ret1 ; store return address into ecx jmp short get_int ; read integer è sostituito da: mov ebx, input1 ; store return address into ecx call get_int ; read integer» La subroutine diventa: get_int: call read_int mov [ebx], eax ; store input into memory ret

17 Vantaggi nell u tilizzo d ello stack Semplicità Possibilità di innestare le chiamate di procedura:» Es: JHWBLQWnel nostro esempio chiama UHDGBLQW» Ciò è reso possibile dalla proprietà LIFO dello stack: UHDGBLQWal termine della propria esecuzione, restituisce il controllo a JHWBLQW, il cui indirizzo era stato salvato sullo stack; JHWBLQWa sua volta, restituisce il controllo al programma chiamante, il cui indirizzo di ritorno è stato anch esso salvato sullo stack» Tale principio di funzionamento è anche alla base della ricorsione

18 Calling conventions (1/ 2) C è bisogno di accordo tra programma chiamante e programma chiamato, riguardo alle convenzioni utilizzate per lo scambio di informazioni Ciò resta valido qualora si voglia far interagire codice in linguaggio ad alto livello con codice assembly Le convenzioni di chiamata possono variare in funzione:» del compilatore utilizzato» Delle opzioni di compilazione utilizzate Una convenzione XQLYHUVDOPHQWH valida fa riferimento all utilizzo delle istruzioni FDOOe UHW

19 Calling conventions (2/ 2) Tutti i compilatori per PC supportano una convenzione di chiamata che consente di creare sottoprogrammi cosiddetti UHHQWUDQW Un sottoprogramma UHHQWUDQWpuò essere invocato da qualsiasi punto di un programma chiamante (al limite anche se stesso) Per che ciò sia possibile, è necessario che il passaggio dei parametri avvenga tramite lo stack

20 Parametri sullo stack I parametri sono inseriti nello stack prima della chiamata a sottoprogramma FDOO Nel caso di parametri il cui valore debba essere alterato dal sottoprogramma, è necessario salvare sullo stack gli indirizzi dei dati SDVVDJJLRSHUULIHULPHQWR Se la dimensione di un parametro è inferiore ad una GRXEOHZRUG, è necessaria una conversione prima di effettuare l inserimento nello stack

21 Accesso ai parametri sullo stack I parametri inseriti nello stack non vengono rimossi dal sottoprogramma, ma l accesso ad essi avviene direttamente sullo stack:» Dato che essi vengono inseriti nello stack prima dell esecuzione dell istruzione FDOO, per estrarli sarebbe necessario effettuare, preliminarmente, un SRSdallo stack dell indirizzo di ritorno (che andrebbe, in seguito, nuovamente inserito)» Lasciando i parametri sullo stack, è possibile accedere ad essi da diverse parti del sottoprogramma, evitando di occupare registri dedicati, o locazioni di memoria

22 L utilizzo del registro (%3 Se lo stack è utilizzato anche per memorizzare dati locali del sottoprogramma, diventa necessario gestire la zona dello stack associata al sottoprogramma stesso (nota come IUDPH) Per fare riferimento ai dati sullo stack, ogni sottoprogramma utilizza il registro (%3» Prima di utilizzarlo, il sottoprogramma salva il valore corrente di (%3 sullo stack» Subito dopo, il nuovo valore di EBP viene fissato all attuale valore dello stack pointer (63» Ciò consente ad (63 di cambiare in seguito all inserimento (o prelievo) di ulteriori dati, mentre (%3 resta fisso e può essere utilizzato come riferimento» Alla fine dell esecuzione, il valore precedente di (%3(salvato sullo stack) viene ripristinato

23 Prologo ed Epilogo Prologo: push ebp ; save original EBP value on stack mov ebp, esp ; new EBP = ESP Epilogo: pop ebp ; restore original EBP value ret

24 Rimozione dei parametri dallo stack In seguito all esecuzione si un sottoprogramma, i parametri devono essere eliminati dallo stack:» Le convenzioni C specificano che è compito del programma chiamante rimuovere i parametri dallo stack» Questo semplifica la realizzazione di funzioni con numero variabile di parametri (tipo SULQWIe VFDQI)» Altri linguaggi impongono che sia il sottoprogramma ad occuparsi della pulizia dello stack al termine dell esecuzione La rimozione dei parametri è effettuata semplicemente aggiungendo un offset opportuno allo stack pointer» In alternativa si potrebbe utilizzare l istruzione SRSla quale comunque richiede che il valore estratto sia salvato in un registro

25 Rimozione dei parametri dallo stack Un esempio:» Un programma che chiama un sottoprogramma, passandogli un parametro sullo stack push dword 1 ; pass 1 as parameter call fun add esp, 4 ; remove parameter from stack

26 Un esempio completo Un programma principale e due sottoprogrammi che utilizzano le convenzioni del C per lo scambio di informazioni Tutti contenuti in unico modulo (cioè un unico file) Utilizzo di più segmenti GDWDe WH[W» Combinati in unico segmento GDWD ed un unico segmento WH[Wdurante il processo di linking Pseudocodice: i = 1; sum = 0; while( get_int(i, &input), input!= 0 ) { sum += input; i++; } print_sum(num);

27 Il program m a principale (1/ 2) segment.text global asm_main asm_main: enter 0,0 ; setup routine pusha mov edx, 1 ; edx is i in pseudo-code while_loop: push edx ; save i on stack push dword input ; push address of input on stack call get_int add esp, 8 ; remove i and &input from stack mov eax, [input] cmp eax, 0 je end_while

28 Il programma principale (2/ 2) add [sum], eax ; sum += input inc edx jmp short while_loop end_while: push dword [sum] ; push value of sum onto stack call print_sum pop ecx ; remove [sum] from stack popa leave ret

29 La subroutine get_int segment.data prompt db ") Enter an integer number (0 to quit): ", 0 segment.text get_int: push ebp mov ebp, esp 3URORJR mov eax, [ebp + 12] call print_int mov eax, prompt call print_string (SLORJR call read_int mov ebx, [ebp + 8] mov [ebx], eax ; store input into memory pop ret ebp ; jump back to caller

30 La subroutine print_sum segment.data result db "The sum is ", 0 segment.text print_sum: push ebp mov ebp, esp mov eax, result call print_string mov eax, [ebp+8] call print_int call print_nl (SLORJR 3URORJR pop ret ebp

31 L immagine dello stack (63 (%3 2OG(%3 2OG(%3 (63 2OG(%3 5(7 2OG(%3 5(7 (63 5(7 5(7,1387,1387 (%3 (63,1387 (';,1387 ('; (%3 (63 ('; (';

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

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

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

Sistemi Operativi. ASSEMBLER per Minix Lez. 17

Sistemi Operativi. ASSEMBLER per Minix Lez. 17 Sistemi Operativi ASSEMBLER per Minix Lez. 17 Minix IA-32 Assembly Language Un linguaggio di programmazione più vicino al modo di esprimersi umano, del linguaggio macchina ma ancora molto vicino al linguaggio

Dettagli

Architetture I. Lez. V La preparazione dei programmi A.A. 09/10. Architetture degli Elaboratori I Danilo Bruschi

Architetture I. Lez. V La preparazione dei programmi A.A. 09/10. Architetture degli Elaboratori I Danilo Bruschi Architetture I Lez. V La preparazione dei programmi Preparazione programmi La sequenza di azioni da intraprendere per trasformare un programma scritto in assembler, o in altro linguaggio evoluto, in un

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

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

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

Linguaggio Assemblativo della famiglia 80x86

Linguaggio Assemblativo della famiglia 80x86 Linguaggio Assemblativo della famiglia 80x86 Dr. Luciano Capitanio BOZZA PRELIMINARE Assembler 80x86 Dr. Luciano Capitanio 1 Linguaggio Assemblativo della famiglia 80x86 Obiettivo Verranno forniti gli

Dettagli

L assembler 80x86. Corso di Calcolatori Elettronici II Prof. Giulio Iannello

L assembler 80x86. Corso di Calcolatori Elettronici II Prof. Giulio Iannello L assembler 80x86 Corso di Calcolatori Elettronici II Prof. Giulio Iannello 6OLGHDFXUDGL6LPRQ3LHWUR5RPDQR Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II La rappresentazione

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

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

Esercizio Esercizio Esercizio Esercizio Esercizio Esercizio Esercizio Esercizio 38...

Esercizio Esercizio Esercizio Esercizio Esercizio Esercizio Esercizio Esercizio 38... Sommario Esercizio 1... 3 Esercizio 2... 3 Esercizio 3... 3 Esercizio 4... 3 Esercizio 5... 3 Esercizio 6... 4 Esercizio 7... 4 Esercizio 8... 5 Esercizio 9... 5 Esercizio 10... 6 Esercizio 11... 6 Esercizio

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

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

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

Il Linguaggio Assembly: Le procedure

Il Linguaggio Assembly: Le procedure Il Linguaggio Assembly: Le procedure Prof. Alberto Borghese Ing. I. Frosio Dipartimento di Scienze dell Informazione {borghese,frosio}@dsi.unimi.it Università degli Studi di Milano Riferimento sul Patterson:

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

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

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

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

Spazio di indirizzamento virtuale

Spazio di indirizzamento virtuale Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - pietro.dilena@unibo.it // The function name says it all int stack_overflow (){

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 dello Stack nel MIPS

Gestione dello Stack nel MIPS Gestione dello Stack nel MIPS Lo stack cresce da indirizzi di memoria alti verso indirizzi di memoria bassi ad es. sp-> 0x7fffffff 0x7ffffdfc riservata stack L inserimento di un dato nello stack (operazione

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

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

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

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA Lezione n.11 n.11 Lezione n. 11 ARCHITETTURA INTERNA ARCHITETTURA ESTERNA CODICE MACCHINA MODI DI INDIRIZZAMENTO ARCHITETTURE A PIU' INDIRIZZI In questa lezione verranno introdotti i concetti di base relativi

Dettagli

Programmazione C. Funzioni e procedure: Activation record. passaggio per indirizzo

Programmazione C. Funzioni e procedure: Activation record. passaggio per indirizzo Programmazione C Funzioni e procedure: passaggio per indirizzo Activation record 2. PASSAGGIO PER INDIRIZZO Dire alla funzione l indirizzo di memoria cui accedere Se occorre passare un array ad una funzione,

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

Esercizi con l assemblatore NASM

Esercizi con l assemblatore NASM Esercizi con l assemblatore NASM Corso di Sistemi Operativi @ Unimi Mattia Monga 17 marzo 2017 Contents 1 Programmare senza il sistema operativo 1 1.1 Programma finale........................... 2 2 Somma

Dettagli

Interazione con il DOS e il BIOS

Interazione con il DOS e il BIOS Interazione con il DOS e il BIOS ARGOMENTI PRESENTATI IN QUESTI LUCIDI Routine di BIOS e DOS Due modalità diverse di restituire il controllo al DOS L interazione con le routine del DOS: l interrupt 21H

Dettagli

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU:

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU: Struttura e Funzione del Processore Capitolo 12 Struttura CPU Compiti CPU: Prelevare istruzioni Interpretare istruzioni Prelevare dati Elaborare dati Scrivere (memorizzare) dati 1 CPU con bus di sistema

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

Esercizi con l assemblatore NASM

Esercizi con l assemblatore NASM Esercizi con l assemblatore NASM Corso di Sistemi Operativi @ Unimi Mattia Monga 23 marzo 2018 Contents 1 Programmare senza il sistema operativo 1 1.1 Programma finale........................... 2 2 Somma

Dettagli

L insieme delle istruzioni (6)

L insieme delle istruzioni (6) L insieme delle istruzioni (6) Architetture dei Calcolatori (lettere A-I) Alcune note conclusive I due principi dell architettura a programma memorizzato Uso di istruzioni indistinguibili dai dati Uso

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

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

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

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

Programmazione Assembly per 8088: Esercizi svolti

Programmazione Assembly per 8088: Esercizi svolti Programmazione Assembly per 8088: Esercizi svolti Marco Di Felice 13 dicembre 2006 1 Esercizio 1 (esercizio 1 del Tanenbaum, Appendice C) TESTO. Dopo l esecuzione dell istruzione MOV AX, 702 qual è il

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

Calcolatori Elettronici Prof. Fabio Roli. Linguaggio Assembly. Capitolo 5. Corso di Laurea di Ingegneria Elettronica

Calcolatori Elettronici Prof. Fabio Roli. Linguaggio Assembly. Capitolo 5. Corso di Laurea di Ingegneria Elettronica Calcolatori Elettronici Prof. Fabio Roli Corso di Laurea di Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Fonti principali: Patterson, A.D., Hennessy, J., "Struttura, organizzazione e progetto

Dettagli

Stack-based buffer overflow

Stack-based buffer overflow Università degli Studi di Milano Facoltà di Scienze e Tecnologie Stack-based buffer overflow Andrea Lanzi A.A. 2015 2016 Andrea Lanzi Stack-based buffer overflow A.A. 2015 2016 1 / 19 Classificazione attacchi

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

Dal linguaggio macchina al linguaggio C

Dal linguaggio macchina al linguaggio C FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi di Udine Dal linguaggio macchina al linguaggio C Programma sorgente, compilatore, file oggetto, file eseguibile programma sorgente

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

Linguaggio macchina e linguaggio assembly

Linguaggio macchina e linguaggio assembly FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi di Udine Linguaggio macchina e linguaggio assembly Formato delle istruzioni 15 8 7 0 gruppo modo di indirizzamento codice dell

Dettagli

Elementi di sicurezza e Privatezza. Lezione 8: memory error exploit

Elementi di sicurezza e Privatezza. Lezione 8: memory error exploit Elementi di sicurezza e Privatezza Lezione 8: memory error exploit Situazione I meccanismi di controllo degli accessi consentono un controllo particolarmente efficace su chi può fare cosa in un sistema

Dettagli

Introduzione al linguaggio macchina

Introduzione al linguaggio macchina Introduzione al linguaggio macchina Fondamenti di Informatica Come è fatto il linguaggio macchina? Progettare il linguaggio macchina q Il linguaggio macchina è un linguaggio di basso livello che viene

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

1 Esercizi con architettura a 1 bus

1 Esercizi con architettura a 1 bus 1 Esercizi con architettura a 1 bus 1.1 Fetch dell istruzione NOTA: l istruzione ClearY azzera il registro Y mentre l istruzione CB imposta a 1 il bit di riporto/prestito in modo da sommare/sottrarre 1.

Dettagli

Architettura di una CPU

Architettura di una CPU Massimo VIOLANTE Politecnico di Torino Dipartimento di Automatica e Informatica Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni 2 M. Violante 1.1

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

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici Il linguaggio assemblativo MIPS (4) Le function (2) Gestione dei sottoprogrammi $a0 - $a3 - $v1 $ra : 4 registri argomento per il passaggio dei parametri : due registri per la restituzione

Dettagli

L ambiente di simulazione SPIM

L ambiente di simulazione SPIM Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/20

Dettagli

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Dettagli

Programmazione II. Lezione 7. Daniele Sgandurra 9/11/2010.

Programmazione II. Lezione 7. Daniele Sgandurra 9/11/2010. Programmazione II Lezione 7 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 9/11/2010 1/24 Programmazione II Lezione 7 9/11/2010 Sommario 1 Gestione della Memoria 2/24 Programmazione II Lezione 7 9/11/2010

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

Istruzioni di modifica della sequenza di elaborazione

Istruzioni di modifica della sequenza di elaborazione Istruzioni di modifica della sequenza di elaborazione Permettono di modificare la sequenza di esecuzione delle istruzioni di un programma, normalmente controllata dal meccanismo automatico di avanzamento

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

Assembler MIPS 32 Assembly II

Assembler MIPS 32 Assembly II TITLE Assembler MIPS 32 Assembly II Riccardo Solmi 1 Indice degli argomenti Programmazione assembly Definizione e controllo di sottoprogrammi Definizione di funzione Chiamate a funzioni Convenzioni riguardanti

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,

Dettagli

Ottenere una modifica del parametro attuale

Ottenere una modifica del parametro attuale Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)

Dettagli

Programmazione in linguaggio assembly per architetture Intel 8088

Programmazione in linguaggio assembly per architetture Intel 8088 Programmazione in linguaggio assembly per architetture Intel 8088 Marco Di Felice 1 Università of Bologna Dipartimento di Scienze dell Informazione Corso di Architettura degli Elaboratori mail: difelice@cs.unibo.it

Dettagli

26 April CHIAMATA A PROCEDURE PROCEDURE ANNIDATE PROCEDURA RICORSIVE I. Frosio

26 April CHIAMATA A PROCEDURE PROCEDURE ANNIDATE PROCEDURA RICORSIVE I. Frosio CHIAMATA A PROCEDURE PROCEDURE ANNIDATE PROCEDURA RICORSIVE I. Frosio SOMMARIO Procedure di sistema (syscall) / direttive Chiamata a procedura semplice Chiamata a procedure intermedia Procedure ricorsive

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

Le procedure ricorsive Come eseguire un programma. Architettura degli Elaboratori e delle Reti, Turno I

Le procedure ricorsive Come eseguire un programma. Architettura degli Elaboratori e delle Reti, Turno I Le procedure ricorsive Come eseguire un programma Architettura degli Elaboratori e delle Reti, Turno I Alberto Borghese Università degli Studi di Milano Dipartimento di Scienze dell Informazione email:

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

ESERCITAZIONE Operandi Architettura ad 1 operando Architettura a 2 operandi Architettura a 3 operandi

ESERCITAZIONE Operandi Architettura ad 1 operando Architettura a 2 operandi Architettura a 3 operandi ESERCITAZIONE 9 Sommario Operandi Registri dedicati Gestione di sottoprogrammi Meccanismi di interruzione 1. Operandi Le prestazioni di una CPU possono variare considerevolmente a seconda del numero di

Dettagli

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H Architettura dei calcolatori e sistemi operativi Architettura MIPS e set istruzioni Capitolo 2 P&H Instruction Set Architecture ISA Linguaggio assemblatore e linguaggio macchina ISA processore MIPS Modello

Dettagli

System Calls, Register Spilling

System Calls, Register Spilling System Calls, Register Spilling Ultimo aggiornamento: 8/4/2016 UNIVERSITÀ DEGLI STUDI DI MILANO nicola.basilico@unimi.it http://basilico.di.unimi.it/ Esercizio 3.1 Eseguire il seguente codice assembly

Dettagli

Famiglia dei processori INTEL

Famiglia dei processori INTEL Famiglia dei processori INTEL 1975 2002 8080-8086 - 80286-80386 - 80486 - Pentium - Pentium II-III-IV - Itanium Compatibilità del SW (assemby) 8086 80286 80386 80486 Pentium Pentium III Perché studiare

Dettagli

Esercizi su microistruzioni. 1 Esercizi con architettura a 1 bus

Esercizi su microistruzioni. 1 Esercizi con architettura a 1 bus Esercizi su microistruzioni Ogni riga elenca i segnali che vengono attivati nello stesso ciclo di clock. Si assume che lettura e scrittura dei registri avvengano all inizio e alla fine del ciclo di clock,

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

Calcolatori Ele,ronici Lezione 6 17/11/2011. Emiliano Casalicchio

Calcolatori Ele,ronici Lezione 6 17/11/2011. Emiliano Casalicchio Calcolatori Ele,ronici Lezione 6 17/11/2011 Emiliano Casalicchio Emiliano.Casalicchio@uniroma2.it Argomen7 della lezione Progammazione Assembler Richiamo sull uso dei registri Uso della memoria Esempio1:

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

Introduzione al linguaggio macchina

Introduzione al linguaggio macchina 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

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto

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

Capitolo 5 - Funzioni

Capitolo 5 - Funzioni Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente

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

Corso di. Stack: Procedure e variabili locali. Architetture degli Elaboratori. Uno stack anche per i calcoli. Lo stack di esecuzione

Corso di. Stack: Procedure e variabili locali. Architetture degli Elaboratori. Uno stack anche per i calcoli. Lo stack di esecuzione Corso di Architettura degli Elaboratori Il livello della microarchitettura: l'isa IJVM Stack: Procedure e variabili locali ambiente di esecuzione procedura A variabili locali di A variabili locali di B

Dettagli

Assembly V: Procedure annidate e recursive

Assembly V: Procedure annidate e recursive Architettura degli Elaboratori e delle Reti Lezione 15 Assembly V: Procedure annidate e recursive Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Dal linguaggio macchina al linguaggio C

Dal linguaggio macchina al linguaggio C FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Dal linguaggio macchina al linguaggio C 2000 Pier Luca Montessoro (si veda la nota di copyright

Dettagli

L ambiente di simulazione SPIM

L ambiente di simulazione SPIM Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/28

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

Gestione delle eccezioni.

Gestione delle eccezioni. Gestione delle eccezioni nicola.basilico@unimi.it http://homes.di.unimi.it/basilico/teaching/ Eccezioni Fetch Decodifica Calcolo Lettura / scrittura Eccezione (es. istruzione non riconosciuta) Eccezione

Dettagli

FONDAMENTI DI INFORMATICA Lezione n. 11

FONDAMENTI DI INFORMATICA Lezione n. 11 FONDAMENTI DI INFORMATICA Lezione n. 11 ARCHITETTURA INTERNA ARCHITETTURA ESTERNA CODICE MACCHINA MODI DI INDIRIZZAMENTO ARCHITETTURE A PIU' INDIRIZZI In questa lezione verranno introdotti i concetti di

Dettagli

Assembly. Modello x86

Assembly. Modello x86 Assembly Modello x86 1 Il microprocessore Un MICROPROCESSORE è un circuito integrato dotato di una struttura circuitale in grado di attuare un prefissato SET di ISTRUZIONI 2 Caratteristiche del microprocessore

Dettagli

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE Il computer o elaboratore è una macchina altamente organizzata capace di immagazzinare, elaborare e trasmettere dati con notevole precisione e rapidità. Schematicamente

Dettagli

20. Gestione della memoria. Andrea Marongiu Paolo Valente

20. Gestione della memoria. Andrea Marongiu Paolo Valente 20. Gestione della memoria Andrea Marongiu (andrea.marongiu@unimore.it) Paolo Valente Classi di memorizzazione Stiamo per vedere la classificazione di un oggetto in funzione del suo tempo di vita In particolare,

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