L assembler 80x86. Corso di Calcolatori Elettronici II Prof. Giulio Iannello
|
|
- Flaviano Venturi
- 8 anni fa
- Visualizzazioni
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
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:
DettagliAssembly 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:
DettagliAssembly (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
DettagliSistemi 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
DettagliArchitetture 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
DettagliLe 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
Dettagli15 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
DettagliArchitetture 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
DettagliLinguaggio 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
DettagliL 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
DettagliAssembly 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
DettagliGestione 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
DettagliEsercizio 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
DettagliIl 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
DettagliFetch 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
DettagliIstruzioni 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:
DettagliIl 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:
DettagliFondamenti 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
DettagliL'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:
DettagliSubroutine 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
DettagliSubroutine 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
DettagliSpazio 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 (){
DettagliCalcolatori 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
DettagliGestione 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
DettagliSottoprogrammi 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
DettagliProcessore 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
DettagliIstruzioni 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
DettagliLinguaggio 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
DettagliProgrammazione 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,
DettagliGestione 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
DettagliEsercizi 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
DettagliInterazione 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
DettagliStruttura 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
DettagliConvenzioni 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
DettagliEsercizi 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
DettagliL 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
DettagliConvenzioni 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
DettagliUniversità 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
DettagliMECCANISMI 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
DettagliArchitettura 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
DettagliProgrammazione 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
DettagliUniversità 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
DettagliCalcolatori 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
DettagliStack-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
DettagliInvocazione 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
DettagliDal 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
DettagliArchitettura 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
DettagliLinguaggio 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
DettagliElementi 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
DettagliIntroduzione 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
DettagliCorso 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
Dettagli1 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.
DettagliArchitettura 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
DettagliIl 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
DettagliCalcolatori 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
DettagliL 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
DettagliLinguaggio 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
DettagliProgrammazione 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
DettagliPerché 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
DettagliIstruzioni 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
DettagliARM: 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
DettagliAssembler 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
DettagliFunzioni, 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,
DettagliOttenere 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)
DettagliProgrammazione 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
Dettagli26 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
DettagliIl 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
DettagliLe 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:
DettagliIntroduzione. 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
DettagliESERCITAZIONE 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
DettagliArchitettura 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
DettagliSystem 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
DettagliFamiglia 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
DettagliEsercizi 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,
DettagliLABORATORIO 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
DettagliCalcolatori 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:
DettagliIntroduzione 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
DettagliIntroduzione 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
DettagliArgomenti 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
DettagliModi 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
DettagliCapitolo 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
DettagliAccesso 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
DettagliCorso 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
DettagliAssembly 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
DettagliDal 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
DettagliL 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
DettagliProgrammazione 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
DettagliGestione 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
DettagliFONDAMENTI 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
DettagliAssembly. 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
DettagliARCHITETTURA 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
Dettagli20. 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,
DettagliLinguaggio 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