FRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG DI UN SISTEMA DI ELABORAZIONE BASATO SUL PROCESSORE emips-sc
|
|
- Costantino Gattini
- 6 anni fa
- Visualizzazioni
Transcript
1 44 FRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG DI UN SISTEMA DI ELABORAZIONE BASATO SUL PROCESSORE emips-sc
2 MODELLO VERILOG DEL PROCESSORE 45 MODELLO VERILOG DEL SISTEMA COMPLETO La gerarchia del modello verilog del sistema è la seguente: testbench.v (istanza testbench) instructions_rom.v (istanza InstrROM) data_ram.v (istanza DataRAM) emips_sc.v (istanza MIPS) pc_reg.v (istanza PC) pc_adder.v (istanza NPC)...
3 FRAMEWORK DI SVILUPPO (I) 46 file instructions.hex MIPS ASSEMBLER CON CONVERSIONE IN UN FORMATO LEGGIBILE DAL SIMULATORE VERILOG (READMEMH) CODICE ASSEMBLY MEMORIA ISTRUZIONI (MODELLO VERILOG) INSTRUCTIONS BUS INSTR ADDRESSES BUS MIPS (MODELLO VERILOG) DATA BUS DATA ADDRESSES BUS MEMORIA DATI (MODELLO VERILOG) SIMULATORE VERILOG (MODELSIM) DATI INIZIALI CONVERSIONE IN UN FORMATO LEGGIBILE DAL SIMULATORE VERILOG (READMEMH) file data_ram.hex
4 FRAMEWORK DI SVILUPPO (II) STRUTTURA DI FILE E DIRECTORY 47 emips-sc_s3 S1.mpf compila.bat emips_s3.asm HEX instructions.hex data_ram.hex ASM file eseguibili dell'assembler... VERILOG testbench_emips_s3.v Memories emips-sc
5 48 ESECUZIONE DI APPLICAZIONI SU SISTEMI EMBEDDED MIPS-based SPECIFICA MISTA C-ASSEMBLY, UTILIZZO DELLA MEMORIA A BASSO LIVELLO, CONVENZIONI DI CHIAMATA A SUBROUTINE
6 INTERFACCIA HW/SW 49 L utilizzo di programmi scritti in linguaggi ad alto livello (c/c++) sul processore di un sistema embedded richiede la specifica di una serie di informazioni supplementari (dimensione della memoria, partizionamento e mappa della memoria, routine di boot, routine di interrupt, ecc.) che non possono essere definite a livello di software c stesso, ma vanno definite a livello assembly-sistema operativo. Si rende necessaria l integrazione di specifiche scritte a livelli diversi: c e assembly Si rende inoltre necessario la conoscenza della strategia usata dal compilatore c utilizzato (nel nostro caso il gcc ) per la gestione a basso livello della memoria
7 INTERFACCIA HW/SW Per fissare i primi concetti legati al funzionamento del compilatore e all'utilizzo dei tool di compilazione semplificati (compilatore + assembler) sviluppati per questo corso, utilizzeremo un semplice sistema processorememoria senza periferiche La microarchitettura MIPS che utilizzeremo è la MIPS-mc. L'architettura di memoria di Von Neumann: vi è una sola memoria condivisa da dati ed istruzioni 50 WriteEnable Signal global clk reset MIPS-mc Instructions / Data Buses INSTRUCTIONS / DATA MEMORY System Addresses Bus
8 51 GESTIONE DELLA MEMORIA PER I SISTEMI MONOPROGRAMMATI IN MODALITA REALE
9 INTERFACCIA HW/SW 52 CONVENZIONI PER LA GESTIONE DELLA MEMORIA
10 INTERFACCIA HW/SW 53 UTILIZZO DELLA MEMORIA (VERSIONE SEMPLIFICATA) (I) Il compilatore utilizza la memoria dividendola in due parti: lo Stack e lo Heap. Lo stack è la porzione di memoria gestita automaticamente dal processore, inizia a partire dalle locazioni con indirizzo più alto e ha una dimensione variabile in funzione dello spazio di cui ha bisogno il programma. Lo heap è invece la zona di memoria gestita dinamicamente, con le funzioni malloc e calloc. Lo Heap inizia dalle locazioni di memoria più basse e si riempie verso locazioni di indirizzo più elevato. Non avendo a disposizione le funzioni di libreria malloc e calloc allocheremo i dati in memoria in maniera esplicita tramite i puntatori. Utilizzeremo inoltre una zona di memoria per il salvataggio dei dati relativi alle routine di interrupt o ad altre routine speciali. Chiameremo la memoria utilizzata in questo modo MEMORIA ALLOCATA MANUALMENTE (MAM) In un sistema di Von Neumann, la parte della memoria di indirizzi più bassi, da zero in poi, viene utilizzata per le istruzioni.
11 INTERFACCIA HW/SW UTILIZZO DELLA MEMORIA (VERSIONE SEMPLIFICATA) (II) 54 A partire dagli indirizzi di memoria più alti sta la funzione main, il compilatore alloca ricorsivamente lo spazio per le procedure allocando e disallocando zone di memoria. Ogni procedura ha a disposizione una zona di memoria privata definita frame di attivazione. Lo spazio dei frame di attivazione è lo stack La memoria di tipo dinamico viene allocata a partire dagli indirizzi bassi e si espande verso quelli alti, a partire da un certo indirizzo in poi. La MAM si può allocare o fra lo heap (sotto lo heap) e la memoria istruzioni (sopra la mem istruzioni) oppure sopra lo stack Per sistemi a memoria condivisa fra dati ed istruzioni la parte più bassa della memoria è dedicata alle istruzioni. main FP MEMORIA DATI GESTITA DAL COMPILATORE SPAZIO ISTRUZIONI locazione 0 TOP OF MEMORY M.A.M. MAIN DATA FUNC 1 DATA FUNC 2 DATA HEAP M.A.M. TEXT STACK: MEMORIA AUTOMATICA ALLOCATA DAL COMPILATORE HEAP: MEMORIA DINAMICA ALLOCATA DAL COMPILATORE TRAMITE MALLOC O CALLOC
12 INTERFACCIA HW/SW MECCANISMO DI CHIAMATA DI PROCEDURA Un opportuno sottoinsieme delle istruzioni dell'is MIPS viene utilizzato per supportare la chiamata di una procedura (funzione), ed una volta terminata la sua esecuzione, il ritorno alla istruzione successiva alla chiamata Ogni volta che deve essere convertita in assembly una chiamata a funzione viene utilizzata una istruzione che forza il salto all'indirizzo della prima istruzione della procedura, e simultaneamente salva quello dell'istruzione successiva nel registro $31. Tale istruzione è jal label_procedura Ogni procedura deve terminare con una istruzione che forza il valore del PC all'indirizzo della istruzione successiva a quella di chiamata, cioè all'indirizzo salvato in $31. Tale istruzione è jr $31 Per gestire la possibilità che una funzione ne chiami a sua volta un'altra, sovrascrivendo l'indirizzo di ritorno in $31, è necessario che questo venga salvato in memoria E' necessaria una convenzione che definisca come salvare in memoria l'indirizzo di ritorno nonchè i parametri passati alla procedura, i dati locali, ecc. 55
13 INTERFACCIA HW-SW GESTIONE DELLO STACK (I) Quando viene eseguita una funzione viene riservata ad essa una porzione dello stack detta frame. La dimensione del frame dipende dal numero di dati relativi alla funzione che è necessario scrivere in memoria e può essere anche nulla se non ci sono dati da memorizzare. Le informazioni da memorizzare per ogni frame sono: parametri della funzione invocata oltre il quarto (i primi quattro parametri sono salvati nei registri da $4 a $7) indirizzo di ritorno dati locali della funzione registri temporanei che verranno sovrascritti durante l'esecuzione della funzione $30 FRAME POINTER $29 STACK POINTER PARAMETRO N PARAMETRO 5 FP DELLA FUNZ CHIAMANTE INDIRIZZO DI RITORNO LOCAL DATA 1 LOCAL DATA N VALORE SALVATO DI $8 VALORE SALVATO DI $n PARAMETRI DELLA FUNZIONE (oltre il quarto) 56 DATI LOCALI DELLA FUNZIONE VALORE SALVATO DEI REGISTRI UTILIZZATI DURANTE LA FUNZIONE
14 INTERFACCIA HW-SW CONVENZIONE DI CHIAMATA DI PROCEDURA PER MIPS 57 Architetture dei Sistemi Embedded 2007/08 S.M. Carta
15 INTERFACCIA HW-SW GESTIONE DELLO STACK (II) ESEMPIO 58 void _main( void ) { int a[2]; int i; int *pointer; pointer = (int*) 0x1000; for( i=0; i<2; i++) a[i] = i; *pointer = a[0]+a[1]; }
16 INTERFACCIA HW-SW GESTIONE DELLO STACK (III) ESEMPIO 59 alloca la memoria per il frame di attivazione del main. La dim minima è di 16 locazioni. main: $L6:.. ;# vars= 16, regs= 0/0, args= 0, extra= 0 subu $sp,$sp,16 li $3,1 addu $2,$sp,4 sw $3,0($2) addu $2,$2,-4 addu $3,$3,-1 bgez $3,$L6 lw $2,0($sp) lw $3,4($sp) #nop addu $2,$2,$3 sw $2,4096 addu $sp,$sp,16 j $31.end _main inizializza i registri che utilizzerà come indici esegue il loop, usa $2 come puntatore alla locazione dell'elemento del vettore utilizzato ed $3 come indice per il conteggio. Calcola il valore degli elementi del vettore e li salva nello stack carica gli elementi del vettore dallo stack, calcola la somma e la salva nella MAM dealloca la memoria (frame di attivazione del main) e ripristina il PC
17 INTERFACCIA HW-SW GESTIONE DELLO STACK (IV) Il frame viene gestito attraverso due registri che sono utilizzati come puntatori: lo Stack Pointer ($sp), che punta all indirizzo della locazione più bassa del frame, e il Frame Pointer ($fp), che punta alla locazione più alta. Mentre il primo è indispensabile il secondo può in certi casi non essere utilizzato a seconda del compilatore, del livello di ottimizzazione utilizzato e del programma in esecuzione. Lo stack pointer serve da riferimento per accedere alle locazioni del frame: per esempio una scrittura su una locazione del frame verrà specificata con: sw $31,20($sp) 60 Le informazioni sul numero di dati da salvare in memoria sono forniti dal compilatore come commenti nel programma assembly in uscita. #vars indica il numero di locazioni utilizzate per memorizzare le variabili locali. Se non sono dichiarati arrays questo numero è nullo. #regs indica il numero di registri che devono essere salvati in memoria. In genere non ce ne sono se non viene invocata una funzione. #args indica il numero di locazioni destinate ai parametri di una funzione invocata. Se non viene invocata nessuna funzione questo numero è zero ma se viene invocata una funzione questo numero è sempre maggiore o uguale a 16, anche se la funzione invocata non ha parametri.
18 INTERFACCIA HW-SW GESTIONE DELLO STACK (V) All inizio dell esecuzione del programma lo Stack Pointer punta all indirizzo successivo a quello più alto in memoria, perché lo stack deve occupare la memoria a partire dagli indirizzi più alti. Le prime istruzioni prodotte dal compilatore riguardano la gestione automatica di memoria e registri. Ogni funzione, se ha bisogno di dati da memorizzare, inizia con l istruzione che fa scendere lo Stack Pointer in modo da allocare lo spazio sufficiente. Seguono eventualmente i salvataggi dei registri che saranno sovrascritti. La chiamata a funzione inizia sempre con un istruzione jal che porta il processore ad eseguire la prima istruzione della funzione chiamata. A questo punto viene creato un altro frame e così via. Alla fine di ogni funzione l eventuale valore restituito viene scritto sul registro $2 o $3, vengono ripristinati i registri sovrascritti con i valori salvati in memoria e viene deallocato il frame riportando lo stack pointer alla posizione che aveva prima della chiamata a funzione. Con l istruzione Jr $ra si torna alla funzione chiamante. 61
19 INTERFACCIA HW-SW SPECIFICA C E BOOT FILE 62 Anche il main viene gestito come una funzione qualunque. Ma come viene effettuata la chiamata al main? Nel caso di Sistema Operativo, vi saranno un assembler ed un linker che si occupano di gestire la cosa in maniera trasparente per il programmatore Nel nostro caso vogliamo che tutto sia gestito in maniera esplicita, non vi è un SO e neppure un vero linker. La chiamata del main viene eseguita tramite una specifica assembly separata codificata in un file detto file di boot Tale file verrà unito alla traduzione assembly della specifica c dando vita ad una specifica assembly completa, su singolo file, che può essere tradotta in linguaggio macchina (cioè nel file di codifica delle locazioni di memoria dedicate alle istruzioni)
20 INTERFACCIA HW-SW FILE DI BOOT Il file di boot che utilizzeremo inizialmente si occupa esclusivamente delle cose essenziali, vedremo in seguito delle specifiche più complete La prima istruzione salta sempre alla routine di inizializzazione del sistema, che in questo caso consiste solo nell'inizializzazione dello stack pointer Una volta inizializzato il sistema viene eseguita la chiamata del main Quando si vuole che lo stack allocato automaticamente dal compilatore si estenda a partire dalle locazioni di indirizzo massimo della memoria, il valore di inizializzazione dello stack pointer coincide con la dimensione della memoria 63 J RESET_HANDLER RESET_HANDLER: ; routine di inizializzazione del sistema li $29,0x3000; ; inizializzazione dello stack pointer ; fine della routine di inizializzazione jal _main ; avvia l'esecuzione del programma principale ; La simulazione termina con il blocco del PC stop: j stop
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(a) INTRODUZIONE ALLE ARCHITETTURE E ALLA SIMULAZIONE VERILOG DI PROCESSORI
1 (a) INTRODUZIONE ALLE ARCHITETTURE E ALLA SIMULAZIONE VERILOG DI PROCESSORI ISA E MICROARCHITETTURA DI PROCESSORI IL PROCESSORE MU0 MODELLAZIONE VERILOG E SIMULAZIONE DEL PROCESSORE MU0 2 ISA E MICROARCHITETTURA
DettagliIl linguaggio Assembly
Il linguaggio Assembly Linguaggio macchina Linguaggio definito da un insieme di istruzioni, codificate come stringhe di bit, che il processore può interpretare ed eseguire direttamente Linguaggio Assembly
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
DettagliDal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione
Dal sorgente all eseguibile I programmi Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Riferimenti sul Patterson: Cap. 2.10 + Appendice B, tranne B.7
DettagliUniversità degli Studi di Roma La Sapienza
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Introduzione ai concetti ed al simulatore SPIM Indice degli argomenti Introduzione Assembler, compilatore, linker, programma
DettagliIl linguaggio del calcolatore: linguaggio macchina e linguaggio assembly
Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Richiamo sull
DettagliAllocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando
DettagliMIPS Instruction Set 2
Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general
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
DettagliL Allocazione Dinamica della Memoria
L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento
DettagliLinguaggi e moduli. Dott. Franco Liberati
(canale A-D) A Linguaggi e moduli Dott. Franco Liberati Linguaggi di programmazione Compilatore Assemblatore Linker (collegatore) LINKER COMPILATORE ASSEMBLATORE LINGUAGGI DI PROGRAMMAZIONE Linguaggio
DettagliModi di esecuzione user / kernel
Corso di Gestione eccezioni nel MIPS Interruzioni Anno Accademico 2006/2007 Francesco Tortorella Modi di esecuzione user / kernel Due modi di esecuzione: User kernel Per ognuno dei due modi di esecuzione
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
DettagliLecture 2: Prime Istruzioni
[http://www.di.univaq.it/muccini/labarch] Modulo di Laboratorio di Architettura degli Elaboratori Corso di Architettura degli Elaboratori con Laboratorio Docente: H. Muccini Lecture 2: Prime Istruzioni
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
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliMacchine astratte, linguaggi, interpretazione, compilazione
Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta
DettagliLezione4: MIPS e Istruzioni (1 Parte)
Architettura degli Elaboratori Lezione4: MIPS e Istruzioni (1 Parte) Michele Nappi mnappi@unisa.it http://www.biplab.unisa.it/ Alcune slide di questa lezione sono prodotte dal Prof. Luigi Palopoli AGENDA
DettagliGestione della Memoria
Gestione della Memoria Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 27 apr, 2016 Sommario 1 Tecniche di gestione Progetto della gestione
DettagliFondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme
DettagliLinguaggi di alto livello, compilatori e interpreti
Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Il punto della situazione STATO DATI
DettagliLaboratorio di Architettura degli Elaboratori
Laboratorio di Architettura degli Elaboratori Dott. Massimo Tivoli Set di istruzioni del MIPS32: istruzioni aritmetiche e di trasferimento Istruzioni (Alcune) Categorie di istruzioni in MIPS Istruzioni
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
DettagliGestione della memoria
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliAllocazione dinamica della memoria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare
DettagliLA FAMIGLIA DI PROCESSORI MIPS
1 INTRODUZIONE ALLA PROGRAMMAZIONE ASSEMBLY DI PROCESSORI MIPS IL PROCESSORE MIPS ISA RIDOTTO emips PROGRAMMAZIONE ASSEMBLY DELL emips FRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG
DettagliRichiami: Ciclo di sviluppo e ASIM
Richiami: Ciclo di sviluppo e ASIM Corso Calcolatori Elettronici 2 Prof. Nicola Mazzocca Ing. Alessandra De Benedictis Programmi e linguaggio macchina Un programma è una sequenza di istruzioni che rappresentano
DettagliElettronica dei Sistemi Programmabili A.A. 2013-2014. Microcontrollori. Introduzione allo sviluppo di progetti
Elettronica dei Sistemi Programmabili A.A. 2013-2014 Microcontrollori Introduzione allo sviluppo di progetti Premessa Qualunque sistema basato su microcontrollore deve eseguire un codice memorizzato in
DettagliPrimi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
DettagliInput/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
DettagliL'allocazione dinamica della memoria
L'allocazione dinamica della memoria Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino I puntatori Le variabili di tipo puntatore permettono di accedere alla memoria
DettagliAXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori
AXO - Architettura dei Calcolatori e Sistema Operativo organizzazione strutturata dei calcolatori I livelli I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sui livelli
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 10 Giovedì 7-11-2013 1 Gestione della memoria La memoria principale è
DettagliLezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22
Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)
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 Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliAllocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Lorenzo Dusty Costa Federico Paolo Kircheis 30 Novembre 2011 1 Introduzione alle memoria dinamica Uno degli inconvenienti che spesso si incontrano nell'uso degli array
DettagliMicroelettronica Corso introduttivo di progettazione di sistemi embedded
Microelettronica Corso introduttivo di progettazione di sistemi embedded Architettura dei sistemi a microprocessore prof. Stefano Salvatori A.A. 2014/2015 Eccetto dove diversamente specificato, i contenuti
DettagliCorso di Architettura (Prof. Scarano) 09/04/2002
Corso di Architettura (Prof. Scarano) 09/0/2002 Un quadro della situazione Lezione 15 Il Set di Istruzioni (1) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno
DettagliSistemi Operativi 1. Mattia Monga. 11 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia
1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it e 11 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia
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
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
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
DettagliProgrammazione (imperativa)
Programmazione (imperativa) Corso di Laurea in Informatica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Lunedì 12.00-13.00 e 14.00-16.00 Mercoledì 14.00-17.00 Laboratorio: Giovedì 12.00-13.00
DettagliI Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix.
I Processi nel Sistema Operativo Unix Processi Unix Unix è un sistema operativo multiprogrammato a divisione di tempo: l unità di computazione è il processo. Caratteristiche del processo Unix: processo
DettagliLINGUAGGI DI ALTO LIVELLO
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada
DettagliDAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione
DAGLI ALGORITMI AI LINGUAGGI Linguaggi di Programmazione E` una notazione con cui e` possibile descrivere gli algoritmi. Programma: e` la rappresentazione di un algoritmo in un particolare linguaggio di
Dettagli1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware.
1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware. 2. Spiegare i diversi tipi di indirizzamento usati dalle istruzioni del set
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione Linguaggi di Programmazione Programmazione. Insieme delle attività e tecniche svolte per creare un programma (codice sorgente) da far eseguire ad un computer. Che lingua comprende
DettagliSTORIA E CARATTERISTICHE
IL LINGUAGGIO C STORIA E CARATTERISTICHE STORIA E VERSIONI Sviluppato da Dennis Ritchie ai Bell Labs nel 1972 per realizzare il sistema operativo UNIX K&R C: 1978 (prima versione, K&R dal nome degli autori
DettagliPuntatori in C Lucidi della Pof.ssa Pazienza
Puntatori in C Lucidi della Pof.ssa Pazienza http://www.uniroma2.it/didattica/foi2/ Puntatori L operatore di indirizzo & Indirizzi, puntatori Aritmetica dei puntatori L operatore di dereferenziazione *
DettagliIl Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003
Il Ciclo Fetch-Decode-Execute C Nyssen/Aberdeen College 2003 Linguaggio Assembler Op code (Mnemonico) Operando #assembly code program 0000 LDA-24 #loads 0001 ADD-25 #adds 0002 HLT #stops #end of program
DettagliUniversità degli Studi di Roma La Sapienza
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Introduzione ai concetti ed al simulatore SPIM Andrea Sterbini e Franco Liberati Tratto da dispense di Alberto Montresor, Riccardo
DettagliFile binari, Operazioni sui File binari, Allocazione dinamica della memoria
File binari, Operazioni sui File binari, Allocazione dinamica della memoria Vitoantonio Bevilacqua bevilacqua@poliba.it Parole chiave: File binari, Funzioni principali file binari, Funzione malloc, Allocazione
DettagliSistema operativo & file system 1
Il software (sw) Software di sistema e file system Lezione 1b L esecuzione di programmi è lo scopo di un elaboratore I programmi sono algoritmi codificati in un particolare linguaggio di programmazione
DettagliModulo 2: Strutture fondamentali della programmazione Java
Modulo 2: Strutture fondamentali della programmazione Java Argomenti Trattati: Un semplice programma Java: Presentazione di un primo Esempio; Introduzione alla struttura; Compilazione ed esecuzione. Argomenti
DettagliFile: definizione. Il file è la più piccola unità logica manipolabie Un file è caratterizzato principalmente da:
File System File: definizione Il file è la più piccola unità logica manipolabie Un file è caratterizzato principalmente da: Dimensione Posizione Accessibilità (solo lettura, lettura e scrittura) Tipo (estensione)
DettagliRichiami sull architettura del processore MIPS a 32 bit
Richiami sull architettura del processore MIPS a 32 bit Architetture Avanzate dei Calcolatori Valeria Cardellini Caratteristiche principali dell architettura del processore MIPS E un architettura RISC
DettagliCorso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica
Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare
DettagliIntroduzione alla programmazione. Walter Didimo
Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata
DettagliLezione 9 programmazione in Java Classi come contenitori
Lezione 9 programmazione in Java Classi come contenitori Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Gestione della Memoria Dati dinamici e statici Il passaggio
DettagliOperatore di indirizzo
Operatore di indirizzo L operatore unario di indirizzo & restituisce l indirizzo della locazione di memoria dell operando Il valore restituito non va usato come l- value (in quanto l indirizzo di memoria
DettagliAllocazione della memoria. Allocazione dinamica della memoria. Allocazione della memoria. Allocazione automatica
Allocazione dinamica della memoria Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Allocazione della memoria Il termine allocazione viene utilizzato per indicare l assegnazione di un blocco
DettagliStruttura interna del sistema operativo Linux
Struttura interna del sistema operativo Linux 5. I device driver A cura di: Anna Antola Giuseppe Pozzi DEI, Politecnico di Milano anna.antola/giuseppe.pozzi@polimi.it -versione del 30 marzo 2004-1-04.-04
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Il tipo puntatore; l allocazione dinamica della memoria Claudio De Stefano - Corso di Fondamenti di Informatica 1 puntatori una variabile di tipo puntatore al tipo x
DettagliLaboratorio di Algoritmi e Strutture Dati. La gestione della memoria dinamica Heap
Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Proff. Francesco Cutugno e Luigi Lamberti 2009 Cenni sui Processi Si definisce Programma un insieme di Istruzioni destinate
DettagliGli indirizzi occupano spazio! Gli indirizzi occupano spazio! Corso di Architettura degli Elaboratori. Indirizzamento immediato
Corso di Architettura degli Elaboratori Il livelo ISA: modalità di indirizzamento Matteo Baldoni Dipartimento di Informatica Università degli Studi di Torino C.so Svizzera, 185 I-10149 Torino baldoni@di.unito.it
DettagliLaboratorio di Architetture degli Elaboratori II (A.A )
Laboratorio di Architetture degli Elaboratori II (A.A. 2015-2016) Matteo Re, matteo.re@unimi.it [cognomi G-Z] (Nicola Basilico, [cognomi A-D]) Ufficio S210, Dipartimento di Informatica, Via Comelico 39/41-20135
DettagliAllocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
DettagliTEORIA DEI SISTEMI OPERATIVI. Sistemi monoprogrammatie multiprogrammati
TEORIA DEI SISTEMI OPERATIVI Sistemi monoprogrammatie multiprogrammati 1 STRUTTURA DEL SISTEMA OPERATIVO UTENTE La struttura di un sistema operativo è di tipo gerarchico: i programmi che lo compongono
DettagliLezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly
Architettura degli Elaboratori Lezione 20 Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Prof. F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
DettagliIl C nel C++: Funzioni
Il C nel C++: Funzioni Funzioni (1) il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma
DettagliLezione 2 Chiamate di procedura e risposta alle interruzioni
Modulo 1 U.D. 1 Lez. 2 Lezione 2 Chiamate di procedura e risposta alle interruzioni Sistemi Operativi I Modulo 1 - Architettura del Calcolatore Unità didattica 1 - Architettura e funzionamento dei sistemi
DettagliIntroduzione alla Programmazione in Java attraverso un esempio commentato
Corso di Studi in Informatica Programmazione 1 corso B prof. Elio Giovannetti Introduzione alla Programmazione in Java attraverso un esempio commentato Programmazione 1 B - a.a. 2002-03 53 Modello di memoria
DettagliLa gestione della memoria. Lezione 16 Sistemi Operativi
La gestione della memoria Lezione 16 Sistemi Operativi La memoria come risorsa La memoria centrale è una risorsa fondamentale di un sistema di calcolo L accesso a memoria centrale è una delle operazioni
DettagliIntroduzione. Indice. Linguaggio macchina. Linguaggio assembler
Indice Linguaggio ad alto livello, linguagio assembler e linguaggio macchina Il linguaggio assembler MIPS: istruzioni aritmetiche, di trasferimento dati e di salto Conversione linguaggio assembler in linguaggio
DettagliAbilità Informa/che. capitolo 3. Prof. Fabio Calefato a.a Giurisprudenza
Abilità Informa/che capitolo 3 Prof. Fabio Calefato a.a. 2015-16 Giurisprudenza Archite3ura Hardware Degli Elaboratori Elemen> della macchina di Von Neumann Memoria principale Processore Memoria secondaria
DettagliAssembly III SPIM: un ambiente di simulazione MIPS
Architettura degli Elaboratori e delle Reti Lezione 13 Assembly III SPIM: un ambiente di simulazione MIPS Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi
DettagliArchitettura dei calcolatori e Software di sistema
Università degli Studi di Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica, Meccanica Lezioni di Informatica di Base per la Facoltà di Lettere e Filosofia Anno Accademico 2012/20103
DettagliIl Sistema Operativo
Il Sistema Operativo Il sistema operativo Con il termine sistema operativo si intende l insieme di programmi e librerie che opera direttamente sulla macchina fisica mascherandone le caratteristiche specifiche
DettagliEsercizi. Assembly. Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014
Esercizi Assembly Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 1 RIPASSO Architettura dei registri del 68K Di (0 i 7): registri di dato a 8, 16, 32 bit Ai (0 i 7): resgistri di a 16, 32
DettagliMIPS & SPIM. Modulo del Corso di Architettura degli Elaboratori. Nicola Paoletti. Università di Camerino Scuola di Scienze e Tecnologie
MIPS & SPIM Modulo del Corso di Architettura degli Elaboratori Nicola Paoletti Università di Camerino Scuola di Scienze e Tecnologie 10 Aprile 2013 AA 2012/2013 Informazioni utili (1/2) Email: nicola.paoletti@unicam.it
DettagliLA GESTIONE DELLA I/O
LA GESTIONE DELLA I/O Il S.O. È l interfaccia tra l hardware e i programmi che effettuano richieste di I/O Sottosistema di I/O strutturato in moduli chiamati DRIVER uno per ogni dispositivo I Driver rendono
DettagliIl Sistema Operativo. Informatica Sistema Operativo 1
Il Sistema Operativo Informatica Sistema Operativo 1 O.S.:.: un intermediario SW Applicativo Sistema Operativo HW Informatica Sistema Operativo 2 O.S. vs applicativi Applicativi accesso a un insieme ridotto
DettagliIl ciclo del processore semplificato BOOTSTRAP FETCH EXECUTE
Roadmap Inquadramento del problema La fase di interrupt nel ciclo del processore Le cause di interruzione Le fasi di uninterruzione Ripristino del programma Latenza Identificazione di dispositivi: soluzioni
DettagliSommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali
Prof. Gian Luca Marcialis Corso di Laurea di Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Fonti principali: Patterson, A.D., Hennessy, J., "Struttura, organizzazione e progetto dei calcolatori
DettagliIl linguaggio assembly
Il linguaggio assembly Introduzione al linguaggio macchina Indice Che cos è l assembly Elementi del linguaggio Memoria di programma Registri interni e di I/O Registri particolari Rappresentazione dell
DettagliProgrammi per la macchina di Mano addizione di due numeri
Programmi per la macchina di Mano addizione di due numeri Indi Codici simbolici esadecimale binario rizzo 000 LDA 004 2004 0010 0000 0000 0100 001 ADD 005 1005 0001 0000 0000 0101 002 STA 006 3006 0011
DettagliCorso di Fondamenti di Informatica Linguaggi di Programmazione
Corso di Fondamenti di Informatica Linguaggi di Programmazione Anno Accademico Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di
Dettagli4 GLI ARRAY E LE STRINGHE
13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si
DettagliArchitettura hardware
Architettura hardware la parte che si può prendere a calci Architettura dell elaboratore Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione
DettagliProgetto del processore e supporto del processore al SO (interruzioni eccezioni) Salvatore Orlando
Progetto del processore e supporto del processore al SO (interruzioni eccezioni) Salvatore Orlando Arch. Elab. - S. Orlando 1 Eccezioni e interruzioni Il progetto del controllo del processore si complica
DettagliU"lizzo della memoria (Indirizzamento, le2ura, scri2ura) Dire8ve Assembler in SPIM
U"lizzo della memoria (Indirizzamento, le2ura, scri2ura) Dire8ve Assembler in SPIM nicola.basilico@unimi.it http://homes.di.unimi.it/basilico/teaching/ Organizzazione della memoria Cosa con"ene la memoria?
DettagliCAP9. Device drivers
Struttura interna del sistema operativo Linux CAP9. Device drivers Device drivers Gestori di periferiche Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici
DettagliPuntatori. Unità 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliCos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione
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
DettagliArchitettura di Von Neumann
Architettura di Von Neumann L architettura è ancora quella classica sviluppata da Von Neumann nel 1947. L architettura di Von Neumann riflette le funzionalità richieste da un elaboratore: memorizzare i
DettagliSommario. Premessa Architettura ARM Programmer's model (ARM7) Sistemi di sviluppo. S. Salvatori - Microelettronica aprile 2016 (13 di 45)
Sommario Premessa Architettura ARM Programmer's model (ARM7) Sistemi di sviluppo S. Salvatori - Microelettronica aprile 2016 (13 di 45) Architettura di ARM Elevato numero di di registi 31 31 registri interni
Dettagli