Corso di Laurea in Informatica Architettura degli elaboratori a.a. 2014-15 Programmazione Assembly: procedure (1) Supporto hardware alle procedure Passaggio.

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

Puntatori in C e C++.
Procedure In assembler.
Procedure e funzioni A. Ferrari.
PUNTATORI Introduzione
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Gestione del processore
Chiamate a Procedure. Per lesecuzione di una procedura, un programma deve eseguire i seguenti sei passi: mettere i parametri in un posto dove la procedura.
SPIM Esercizi. Esercizio 7 – load/store Il codice deve: Inserire in memoria la word 0x a Leggere questo dato e inserirlo in s0 Sommarci 5 Salvare.
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Funzioni definite dall’utente
Laboratorio di informatica: ASSEMBLER
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
eliana minicozzi linguaggi1a.a lezione2
CALCOLATORI ELETTRONICI Gestione delle subroutine.
Caratteristiche principali dell’architettura del processore MIPS
Caratteristiche principali dell’architettura del processore MIPS
Gestione delle subroutine
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Approfondimento delle classi
1 Gestione del processore Il modello a processi sequenziali.
memoria gestita staticamente:
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
Le funzioni.
Linguaggi di programmazione: funzioni Le funzioni richiedono un numero fisso o variabile di argomenti, ovvero valori che devono essere passati alla funzione.
Architettura degli Elaboratori II (canale P-Z) Linguaggi e moduli
Architettura del calcolatore
Architettura degli Elaboratori II (canale P-Z) Istruzioni di controllo Dott. Franco Liberati.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Passaggio di parametri per indirizzo
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
1 Università di Pavia - corso di Calcolatori Elettronici C code: L1:g = g + A[i]; i = i + j; if (i != h) goto L1; MIPS code: L1:add $t1, $s3, $s3# $t1.
1 Università di Pavia - corso di Calcolatori Elettronici PROGETTO DI UN SISTEMA BASATO SU  P PROBLEMA REALE SVILUPPO HARDWARESVILUPPO SOFTWARE INTEGRAZIONE.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Calcolatori Elettronici Il Processore (2)
Allievi Elettrici - AA Le funzioni ricorsive in C
Programmazione Assembly
CALCOLATORI ELETTRONICI
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
Corso di Laurea in Informatica Architettura degli elaboratori a.a ISA e Asm: esempi e suggerimenti.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
Esercitazione 3 Introduzione allo SPIM Pseudo-Istruzioni
L’esecuzione dei programmi
SPIM Esercizi. Esercizio 1 – il comando ‘li’ Il codice deve eseguire una singola operazione: mettere il valore immediato 1023 nel registro s3.
FUNZIONI: IL MODELLO A RUN-TIME 1) creazione di una nuova attivazione (istanza) del servitore 2) allocazione di memoria per i parametri e per le variabili.
Esercitazione 4 Chiamate di procedure Claudia Raibulet
Esercizio 14 – chiamata di una procedura Il codice deve: Passare due parametri alla procedura ‘salva’ Questa procedura deve salvare i due parametri nel.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Fondamenti di Informatica1 Linguaggi Diversi tipi di linguaggi: –Imperativi –Funzionali –Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio.
Convenzioni chiamate a procedure Riassunto Pratico.
1 System Call ancora Vediamo passo passo come funziona una SC.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Puntatori in C Un puntatore è una variabile che contiene un indirizzo di memoria. Quando una variabile contiene l’indirizzo di un’altra variabile, si dice.
Il Processore Il processore è la componente dell’unità centrale che elabora le informazioni contenute nella memoria principale L’elaborazione avviene eseguedo.
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata (3) Istruzioni J-type Istruzioni di salto Istruzioni.
Corso di Informatica Applicata Introduzione Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Ing. Saverio De.
Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (2) Convenzioni di uso dei registri Utilizzo.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Corso di Laurea in Informatica Architettura degli elaboratori a.a ISA e Asm: esempi e suggerimenti.
Linguaggio C: Funzioni e Puntatori Laboratorio di Programmazione Gruppo 1.
Transcript della presentazione:

Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (1) Supporto hardware alle procedure Passaggio parametri attraverso registri Syscall

Flusso di controllo A.A Procedure (1)2 ChiamanteProcedura chiamata “Call” È un salto a una label che “è” il nome della procedura Esecuzione della procedura “Return” Anche questo è un salto... Anche questo è un salto... Ma qual è l’indirizzo “giusto” a cui saltare al ritorno dalla procedura?

Istruzioni jal e jr jal (“jump and link”) Salva nel registro $ra (registro 31) (“return address”) l’indirizzo a cui tornare dopo l’esecuzione della procedura (è l’indirizzo successivo a quello dell’istruzione jal, cioè l’indirizzo in cui si trova la jal + 4) jr (“jump register”) Salta all’indirizzo contenuto in un registro È una istruzione di uso generale che consente di saltare a qualsiasi locazione di memoria, MA... jr $ra Uno degli utilizzi tipici di jr Per realizzare il ritorno da procedura Saltando all’indirizzo precedentemente salvato da jal A.A Procedure (1)3

Passaggio parametri (convenzioni base) $a0 - $a3: registri argomento per il passaggio dei parametri $v0 - $v1: registri valore per la restituzione dei risultati NB: dal punto di vista hw sono registri come tutti gli altri, MA......il loro utilizzo per il passaggio di parametri e risultati è una convenzione programmativa che deve essere rispettata per consentire di scrivere procedure che Possono essere scritte senza bisogno di sapere come è fatto il programma che le chiama Possono essere chiamate senza bisogno di sapere come sono fatte “dentro” NB: un parametro può essere un dato o un indirizzo!!! Rivedere passaggio parametri “per valore” o “per indirizzo” dall’insegnamento di Programmazione 1 Confrontare le istruzioni la e lw Guardare bene e far girare step-by-step gli esempi somma1 e somma2 nel folder Procedure elementari in Laboratorio ISA/ASM Confrontare i due esempi Leggere con attenzione tutti i commenti!!! (e capirli...) A.A Procedure (1)4

Esempio elementare (1): dati A.A Procedure (1)5.data num1:.word 50 num2:.word 14 result1:.word 0 num3:.word 50 num4:.word -66 result2:.word 0 Il programma definisce quattro numeri num1, num2, num3 e num4. Definisce una procedura “somma1” che riceve due numeri come parametri e restituisce la loro somma. Chiama due volte la procedura passando come parametri prima num1 e num2 (memorizzando il risultato in result1), poi num3 e num4 (memorizzando il risultato in result2)

Esempio elementare (2): programma principale A.A text #prima chiamata della procedura lw $a0, num1 #predisposizione del primo parametro lw $a1, num2 #predisposizione del secondo parametro jal somma1 #l'indirizzo della istruzione successiva viene salvato in $ra e si salta alla procedura. sw $v0, result1 #memorizzazione del primo risultato #seconda chiamata della procedura lw $a0, num3 lw $a1, num4 jal somma1 sw $v0, result2

Esempio elementare (3): la procedura A.A Procedure (1)7 #Procedura somma1: #questo è l'indirizzo iniziale della procedura add $v0, $a0, $a1 #convenzione: I registri $a0-$a3 si usano per passare i parametri i registri $v0 e $v1 si usano per restituire i risultati jr $ra # il registro $ra contiene l’indirizzo di ritorno

Problemi aperti Cosa succede se una procedura ne chiama un’altra? Si perde il contenuto di $ra della prima chiamata????? Procedure recursive???? -> uso dello stack Se una procedura usa registri, cosa succede del contenuto lasciato nei registri dal chiamante? Convenzioni: registri $s e $t Dove stanno le variabili locali della procedura? Stack frame eccetera Di tutto questo parleremo più avanti......ma cominciate a porvi i problemi A.A Procedure (1)8

Sistema Operativo e Syscall In un sistema reale esiste il Sistema Operativo......che è un insieme di programmi che: stanno in un’area (protetta) di memoria svolgono funzioni di utilità generale (in particolare, I/O) richiamabili dai programmi utente La struttura generale e le funzioni di un SO saranno trattate nell’insegnamento di Reti e Sistemi Operativi (II anno) I meccanismi base di chiamata al SO sono trattati nel seguito di questo insegnamento Il simulatore MIPS fornisce alcune funzioni elementari che simulano alcune funzionalità base del SO......richiamabili attraverso il meccanismo di syscall, concettualmente analogo a una chiamata a procedura A.A Procedure (1)9

Syscall Analogo a una chiamata a procedura Convenzioni per le syscall: Tabella a pag. A33 (Appendice A) Impostare nel registro $v0 il codice della chiamata Impostare i parametri nei registri $a0-&a3 (come da tabella) Syscall Syscall essenziali: exit2 codice 17: terminazione del programma! read_int print_int codice 1 (parametro passato per valore!!) read_string (guardare e capire bene i parametri!!!) print_string (parametro passato per indirizzo!!).... A.A Procedure (1)10

Syscall (esempio) A.A Procedure (1)11 # il codice seguente stampa la stringa «La risposta è 5 »:.data str:.asciiz “La risposta è “ numero:.word 5.text li $v0, 4 # Codice della chiamata di sistema per print_str la $a0, str # Indirizzo della stringa da stampare (passato per indirizzo!!!) syscall # Stampa la stringa lw $v0, 1 # Codice della chiamata di sistema per print_int lw $a0, numero # Numero intero da stampare (passato per valore!!!) syscall # Stampa l’intero