Corso di Laurea Magistrale in Ingegneria Informatica

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso di Laurea Magistrale in Ingegneria Informatica"

Transcript

1 Corso di Laurea Magistrale in Ingegneria Informatica CFU 9 A.A Requisiti preliminari Conoscenza dei linguaggi di programmazione Conoscenza dei paradigmi di programmazione Conoscenza delle diverse modalita di allocazione della memoria Capacita di sviluppare applicazioni software anche complesse Conoscenza delle principali strutture dati e degli algoritmi per la loro gestione Obiettivi Tecniche di traduzione per i moderni linguaggi di programmazione sia di tipo general purpose che linguaggi per applicazioni specifiche 1

2 Orario delle lezioni Mercoledì aula D41 Giovedì aula D33 Venerdi 8-10 aula D33 Chiarimenti e informazioni Orario ricevimento Mercoledi dalle 13 alle 15 Venerdi dalle 10 alle 11 vincenza.carchiolo@dieei.unict.it The Structure of a Compiler The Grouping of Phases into Passes - Compiler-Construction Tools - The Evolution of Programming Languages - Impacts on Compilers - Applications of Compiler Technology Implementation of High-Level Programming Languages The Static/Dynamic Distinction - Environments and States Static Scope and Block Structure - Explicit Access Control Dynamic Scope - Parameter Passing Mechanisms - Aliasing Lexical Analysis The Role of the Lexical Analyzer - Lexical Analysis Versus Parsing - Tokens, Patterns, and Lexemes - The Lexical -Analyzer Generator Lex - Finite Automata - From Regular Expressions to Automata - Design of a Lexical-Analyzer Generator - Optimization of DFA-Based Pattern Matchers 2

3 Syntax Analysis Context-Free Grammars - Writing a Grammar - Top-Down Parsing - Bottom- Up Parsing - LR Parsing: LR(0), SLR(1), LR(1) and LALR(1) - Using Ambiguous Grammars - Parser Generators Syntax-Directed Translation Syntax-Directed Definitions - Evaluation Orders for SDD's - Applications of Syntax-Directed Translation - Syntax-Directed Translation Schemes - Implementing L-Attributed SDD's Intermediate-Code Generation Variants of Syntax Trees - Directed Acyclic Graphs for Expressions - The Value- Number Method for Constructing DAG's - Three-Address Code - Types and Declarations Translation of Expressions - Type Checking - Backpatching - Switch-Statements - Intermediate Code for Procedure Storage Organization Static Ve rsus Dynamic Storage Allocation - Stack Allocation of Space - Access to Nonlocal Data on the Stack Heap Management - Garbage Collection Trace- Based Collection - Short-Pause Garbage Collection - Advanced Topics in Garbage Collection - Parallel and Concurrent Garbage Collection Code Generation Issues in the Design of a Code Generator - The Target Language - Addresses in the Target Code - Basic Blocks and Flow Graphs - Basic Blocks - Optimization of Basic Eliminating Redundant Loads and Stores - Algebraic Simplification and Reduction in Strength. Register Allocation and Assignment- Tree-Translation Schemes - Optimal Code Generatipn for Expressions Dynamic Programming Code-Generation 3

4 Machine-Independent Optimizations The Principal Sources of Optimization - Data-Flow Analysis Foundations of Data-Flow Analysis - Constant Propagation - Partial- Redundancy Elimination - Loops in Flow Graphs - Region-Based Analysis - Symbolic Analysis Instruction-Level Parallelism Processor Architectures - Code-Scheduling Constraints - Basic-Block Scheduling - Global Code Scheduling - Software Pipelining Optimizing for Parallelism and Locality Basic Concepts - Matrix Multiply - Iteration Spaces - Affine Array Indexes - Data Reuse -Array Data-Dependence Analysis - Synchronization-Free Parallelism -Pipelining Interprocedural Analysis Basic Concepts - Virtual Method Invocation - Context-Insensitive Interprocedural Analysis - Context-Sensitive Pointer Analysis - Datalog Implementation by BDD's Modalità esami Prova scritta esame orale elaborato (facoltativo limitazione nel voto 27/30) gruppi di 2 3 persone Prove in itinere dispensano dalla prova scritta e da una parte della prova orale saranno valide fino al 10 ottobre 2013) Riservate a coloro che frequentano 4

5 Libri Aho Alfres V. Lam Monica S. Sethi Ravi - Ulmann J. Compilers: principles, techniques & tools, Second Edition, Addison Wesley Steven Muchnick, Advanced Compiler Design Implementation, Morgan Kaufmann. Fischer, Le Blanch, "Crafting a compiler", The Benjamin Cummings Company, Inc Altro materiale Robert Morgan, Building an Optimizing Compiler, Digital Press. R. Sebesta "Concept of Programming Language", The Benjamin Cummings Company, Inc. altro.. È necessario registrarsi Contiene Materiale didattico Avvisi Prenotazione e gestione esami Consegna elaborati 5

6 I compilatori forniscono una interfaccia essenziale fra applicazioni e architettura I compilatori inglobano una vasta gamma di tecniche basate su aspetti teorici ampiamente utilizzati Lo sviluppo dei compilatori consente di acquisire una maggiore abilità nello sviluppo del software Il termine compilatori fu coniato da by Gracev Murray Hopper nel La traduzione fu vista come una compilazione di una sequenza di sottoprogrammi in linguaggi macchina selezionati da una libreria. Il primo compilatore reale fu un compilatore FORTRAN sviluppato alla fine degli anni cinquanta. Esso permetteva per la prima volta ai programmatori di utilizzare un linguaggio sorgente problem oriented Ambiziose ottimizzazioni furono utilizza per per produrre codice macchina efficiente che fu vitale per i primi computers con capacità piuttosto limitate. L uso efficiente delle risorse è comunque ancora essenziale per i moderni compilatori 6

7 I compilatori sono fondamentali nei moderni computer essi aggiscono come traduttori che consentono di trasformare un linguaggio di programmazione human-oriented in uno computer-oriented. La maggior parte degli utenti vedono un compilatore come una black box. I compilatori consentono ai programmatori di ignorare i dettagli machine-dependent della programmazione Correttezza I compilatori consentono ai programmatori di scoprire gli errori Le tecniche di compilazione consentono di migliorare la sicurezza: per esempio Java Bytecode Verifier I compilatori consentono la protezione della proprieta intelletuale (obfuscation). Efficenza tempo, spazio per i dati, spazio per il codice a compile & run-time Supporta l espressività del linguaggio Supporta caratteristiche dell ambiente di programmazione Fast turnaround time Compilazione separata Debugging codice sorgente 7

8 I compilatori hanno comunque altri utilizzi al di la dei traduttori di linguaggi di programmazione evoluti in linguaggio macchina TeX e LaTeX usano compilatori per tradurre testo e comandi di formattazione. Postscript (generato da LaTeX, Word, etc) può essere considerato un linguaggio di programmazione tradotto ed eseguito da una stampante o da un visualizzatore postscript per produrre una forma leggibile di un documento. Un linguaggio per la rappresentazione dei documenti standardizzzato permette l interscambio indipendentemente da come e dove essi sono stati creati e visualizzati. Mathmatica è un sistema interattivo che miscela programmi con matematica. Il sistema utilizza tecniche di compilazione per gestire le specifiche del problema, la sua rappresentazione interna e la sua soluzione. Verilog e VHDL supportano la creazione di circuiti VLSI. Un silicon compiler specifica il layout e la composizione della maschere del circuito VLSI utilizzando celle standard. Un silicon compiler come un compilatore tradizionale comprende e applica le regole di progettazione che determinano la fattibilità di un dato circuito. 8

9 Strumenti interattivi spesso hanno bisogno di un linguaggio di programmazione per sostenere l'analisi automatica e la modifica di un sistema. Come si fa a filtrare automaticamente o modificare un documento di MS Word? Avete bisogno di un testo basato su specifiche che possono essere trasformate, come un programma, per verificare la validità o produrre una versione aggiornata. E un programma che legge una frase di un linguaggio e la traduce in un altro linguaggio Linguaggio sorgente Di norma un programma scritto in un linguaggio di alto livello Compilatore Linguaggio oggetto Di norma il programma equivalente scritto linguaggio macchina (machine code relocatable object file) errori 9

10 Linguaggi di programmazione ad alto livello Incremento la produttività dei programmatori Facilità di maintenance del codice Maggiore portabilità del codice Dettagli dei linguaggi di basso livello Scelta delle istruzioni Metodi di ndirizzamento Pipelines Uso della cache Parallelismo a livello di istruzione I compilatori sono necessari per coprire il gap tra i linguaggi high-level e low-level I calcolatori continuano a cambiare da quando sono stati inventati Cambi nell architettura cambi nei compilatori Nuove caratteristiche significa nuovi problemi Modifiche nei costi Necessità di re-engineer di soluzioni conosciute Significative differenze nelle performance 10

11 Il progetto di compilatori investe numerosi settori della computer science All interno di un compilatore intervengono tutte queste componenti. Inteligenza artificiale Algoritmi Teoria Sistemi Architetture greedy algorithms learning algorithms graph algorithms Union-find network flows dynamic programming dfas for scanning parser generators lattice theory for analysis allocation and naming locality synchronization pipeline management memory hierarchy management instruction set use I compilatori sono pezzi di software di grandi dimensioni ed enormemente complessi Lo sviluppo di compilatori richiede conoscenze su Strumenti di programmazione (compilers, debuggers) Strumenti per la generazione di programma (flex yacc bison) Librerie software (sets collections) Simulatori (spim) La conoscenza della struttura di un compilatore migliora le qualità del progettista del software 11

12 Codice corretto Il codice prodotto sia efficiente (output runs fast) Il compilatore sia efficiente (Compiler runs fast) Il tempo di compilazione sia proporzionale alla dimensione del codice Compilazione separata Accurata diagnosi degli errori sintattici Funzioni adeguatamente con il debugger Accurata diagnosi delle anomalie Cross language calls Ottimizzazione predicibile Le tecniche utilizzate per lo sviluppo dei compilatori trovano impiego in numerosi problemi della computer science. Le tecniche usate in un analizzatore lessicale possono essere utilizzate negli editor di testi (text editors), nei sistemi di information retrievial e nei programmi di pattern recognition. Le tecniche usate in un parser possono essere utilizzate nei sistemi di processamento delle interrogazioni come SQL. Molti software che hanno un front-end complesso possono utilzzare tecniche utilizzate nel progetto dei compilatori Esempio: un risolutore simbolico di equazioni che prende una equazione in ingresso e esegue il parsing di tale equazione Natural Language Processing (NLP) 12

13 Numero di passi compilatori a singolo passo - compilatori a più passi con numero di passi si intende il numero di volte che viene letto il codice sorgente durante la compilazione Ottimizzazione nessuna ottimizzazione ottimizzazione in spazio ottimizzazione in tempo Ottimizzazione in potenza pure machine code i compilatori generano codice per un particolare set di istruzioni macchina non assumendo l esistenza di alcun sistema operativo o libreria di funzioni questo approccio è raro ed è utilizzato per compilatori di linguaggi per l implementazione di sistemi augmented machine code i compilatori generano codice per un particolare set di istruzioni macchina arricchito con routine di sistema operativo o di supporto. Per eseguire un tale codice oggetto sulla macchina devono esistere un sistema operativo e una collezione di routine di supporto (I/O, allocazione di memoria) che vanno lincate al codice oggetto il grado di corrispondenza fra codice virtuale e hardware può variare moltissimo 13

14 Virtual machine code i compilatori generano codice composto esclusivamente da codice virtuale. Questo approccio è attraente perché permette di generare codice eseguibile indipendente dall hardware Se la macchina virtuale viene mantenuta semplice e pulita, il suo interprete può essere facile da scrivere. Questo approccio penalizza la velocità di esecuzione di un fattore da 3:1 a 10:1. A "Just in Time" (JIT) può tradurre porzioni di virtual codice in codice nativo per velocizzare l esecuzione L uso di Virtual machine code può servire per una varietà di scopi: semplificare un compilatore fornendo le primitive adatte (ad esempio come chiamate di metodo, string la manipolazione, e così via). trasportabilità del compilatore si può diminuire la dimensioni del codice generato dato che le istruzioni sono progettate per una particolare linguaggio di programmazione (per esempio codice JVM per Java). Quasi tutti i compilatori, in maggiore o minor misura, generare codice per un virtuale macchina, alcune delle operazioni devono essere interpretate. 14

15 Assembly language, relocatable binary, memory-image. Viene prodotto un file di testo contenente il codice sorgente assembler. Un certo numero di decisioni nella generazione del codice (target delle istruzioni di salto, forma degli indirizzi, e così via) sono lasciate all assemblatore. Questo approccio è buono per i progetti didattici. Supporta la generazione di codice assembler per "crosscompilation" (la compilazione viene effettuata su un computer diverso da quello dove il codice dovra essere eseguito). La generazione di codice assembly semplifica il debug e la comprensione di un compilatore (in quanto si può vedere il codice generato). 15

16 C come linguaggio "assembly universale". Il C è machine independent molto più di qualsiasi particolare linguaggio assembly. Tuttavia, alcuni aspetti di un programma (come la rappresentazione a run-time dei dati) non sono accessibili utilizzando il codice C, ma facilmente accessibili in linguaggio assembly Il codice può essere generato in un formato binario con riferimenti esterni e di istruzione locali e gli indirizzi dati non sono ancora vincolati. Gli indirizzi vengono assegnati relativamente all'inizio del modulo o rispetto alla località denominata simbolicamente. Un passo di link (linkage step) consente di aggiungere le librerie di supporto e altre routine compilate separatamente e produce un formato binario assoluto eseguibile del programma 16

17 Il codice compilato può essere caricato in memoria ed immediatamente eseguito Vantaggi: Questo è il metodo più veloce Svantaggi: La possibilità di utilizzo di librerie può essere limitata Il programma deve essere ricompilato per ogni esecuzione. I comilatori Memory-image sono utili durante la fase di debug dove i frequenti cambiamenti sono la norma e i costi di compilazione superano di gran lunga i costi di esecuzione. Ci sono due fasi fondamentali in un compilatore: Analisi e Sintesi Nella fase di analisi, viene creata una rappresentazione intermedia del programma sorgente Sono parti di questa fase l Analizzatore lessicale, l Analizzatore Sintattico e l Analizzatore Semantico Nella fase di sintesi, viene creato, partendo dalla rappresentazione intermedia, il programma target equivalente Sono parti di questa fase il Generatore di codice intermedio, il Generatore di Codice e l Ottimizzatore 17

18 Source Program Lexical Analyzer Syntax Analyzer Semantic Analyzer Intermediate Code Generator Code Optimizer Code Generator Target Program Ogni fase trasforma il prgramma sorgente da una rappresentazione in un altra Durante queste fasi vengono utilizzati: Gestore degli errori (Error handlers) Tabella dei simboli (Symbol table). Le scanner (o analizzatore lessicale) trasforma il codice sorgente in una forma compatta e uniforme (tokens=elementi lessicali) elimina informazioni non necessarie presenti nel codice sorgente (commenti) processa le direttive di compilazione (include, define, etc) scopre eventuali errori nel lessico 18

19 Un analizzatore lessicale legge il programma sorgente carattere per carattere e ritorna tokens del programma sorgente. Un token descrive un insieme di caratteri che hanno lo stesso significato (come identificatore, operatori, keywords, numeri, delimitatori etc) newval = oldval + 12 => tokens: newval identifier = assignment operator oldval identifier + add operator 12 a number Le informazioni sugli identificatori sono memorizzate nella tabella dei simboli (symbol table). Le espressioni regolari sono la notazione che in modo efficace consente di descrivere i tokens Gli Automi a Stati Finiti Deterministici (Deterministic Finite State Automaton, Deterministic FSA) sono utilizzati per implementare una analizzatore lessicale 19

20 Il Parser (o analizzatore sintattico) individua gli errori sintattici si raggruppano i tokens in frasi grammaticali crea la struttura sintattica generalmente sotto forma di un albero chiamato parse tree o albero sintattico astratto (AST = abstract syntax tree) di un dato programma. Un parse tree descrive la struttura sintattica. Assegnazione Identificatore = Espressione NewVal Espressione + Espressione Identiticatore Number OldVal 12 In un parse tree, tutti le foglie rappresentano un token 20

21 La sintassi di un linguaggio è specificata per mezzo di una grammatica non contestuale (context free grammar CFG). Le regole di una CFG sono ricorsive Un analizzatore sintattico verifica se un dato programma sodisfa le regole derivate dall CFG o no Se le regole sono soddisfatte l analizzatore sintattico crea un parse tree per il programma dato Spesso per specificare una CFG viene utilizzata una BNF (Backus Naur Form) Assegnazione -> Identificatore = Espressione Espressione -> Identificatore Espressione -> Number Espressione -> Espressione + Espressione 21

22 Quali costrutti di un programma devono essere riconosciuti da un analizzatore lessicale, e quali da un analizzatore sintattico? Ambedue fanno le stesse cose; ma l analizzatore lessicale tratta solo i costrutti del linguaggio non-ricorsivi. L analizzatore sintattico consente di trattare i costrutti del linguaggio ricorsivi L analizzatore lessicale semplifica il lavoro dell analizzatore sintattico. L analizzatore lessicale riconosce i componenti più piccoli (tokens) del programma sorgente. L analizzatore sintattico lavora sui tokens riconoscendo le strutture del linguaggio e producento un albero sintattico astratto In relazione a come viene creato AST ci sono differenti tecniche che possono essere divise in due gruppi: Top-Down Parsing: La costruzione del AST (o parse tree) inizia dalla radice e procede verso le foglie. Efficienti parser top-down possono facilmente essere costruiti a mano. Recursive Predictive Parsing, Non-Recursive Predictive Parsing (LL Parsing). Bottom-Up Parsing: La costruzione del AST inizia dalle foglie e procede verso la radice. Di norma efficienti parser bottom-up parsers sono creati con l ausilio di tool software I parser Bottom-up è anche conosciuto con il nome di shift-reduce parsing. Operator-Precedence Parsing facili da implementare LR Parsing molte forme di shift-reduce parsing, LR, SLR, LALR 22

23 Analisi semantica cerca errori semantici informazioni sui tipi - type checking Ottimizzazione cerca di migliorare il codice per limitare il tempo di esecuzione e la memoria necessaria (questa fase può essere molto complessa) Generazione del codice Cerca nel programma sorgente errori semantici Raccoglie informazioni necessarie per la generazione del codice Controlla la semantica statica di ogni nodo AST. Esegue il type-checking Verifica che il costrutto è legale (che tutti gli identificatori coinvolti sono dichiarati, che i tipi sono corretti Se il costrutto è semanticamente corretto, il il type checker "decora" il nodo AST, aggiungendo informazioni relative al tipo o alla tabella di simboli Se è scoperto un errore semantico viene generato un opportuno messaggio d'errore Il type checling è puramente dipendente dalle regole semantiche del linguaggio sorgente. È indipendente dal linguaggio target. 23

24 Di norma le informazioni semantiche non possono essere rappresentate con un linguaggio non contestuale (context-free language) Le grammatiche non contestuali sono integrate con attributi (regole semantiche) Il risultato e una traduzione syntax-directed Esempio: newval = oldval + 12 Il tipo dell identificatore newval deve corrispondere con il tipo dell espressione (oldval+12) Un compilatore può produrre una rappresentazione esplicita del codice intermedio. Questo codice intermedio (Intermedie Rapresentation = IR) è generalmente indipendente dall architecture. Il livello del codice intermedio è generalmente vicino a quello del codice macchina. Esempio: newval = oldval * fact + 1 id1 := id2 * id3 + 1 MULT id2,id3,temp1 ADD temp1,#1,temp2 MOV temp2,,id1 24

25 Se un elemento è semanticamente corretto può essere tradotto. La trauzione richiede che venga catturato il significato a run-time di un costrutto. Per esempio l AST di un ciclo while contiene due sottoalberi, uno per controllare l espressione di controllo, e l'altro per il corpo del ciclo. Nulla nell AST dimostra che un ciclo while cicla. Questo "senso" è catturato quando un AST di un ciclo while viene tradotto. Nel IR, la nozione di verificare il valore dell espressione di controllo di e condizionalmente l'esecuzione del corpo del ciclo diventa esplicito. La traduzione è dettata dalla semantica del linguaggio sorgente. Poco della natura del macchina di destinazione deve essere reso evidente. Dettagliate informazioni sulla natura della macchina di destinazione (operazioni disponibili, affrontando, registrati caratteristiche, ecc) è riservata per la fase finale di generazione del codice. In semplici compilatori non ottimizzati il traduttore genera il codice di riferimento direttamente, senza utilizzare un IR. In compilatori più complessi prima si genera un IR di alto livello (source oriented) e successivamente viene tradotto in un IR a basso livello (target oriented) Questo approccio consente una chiara sperazione fra dipendenze derivanti dal sorgente e dal target. 25

26 ll codice IR generato dal traduttore è analizzato e trasformato in codice IR equivalente ottimizzato. Il termine ottimizzazione è in realtà ambiguo: non sempre il codice prodotto è la migliore traduzione possibile del codice IR infatti Alcune ottimizzazioni sono impossibili daeseguire in certe circostanze perché sono un problema indecidibile L eliminazione del codice morto è in generale un problema inpossibile Altre ottimizzazioni sono troppo costosi in tutti i casi. Questi comportano problemi NP-complessi, che si ritiene essere intrinsecamente esponenziali. L assegnazione di registri ad una variabile è un esempi di un problema NPcomlesso L ottimizzazione può essere comlessa, può coinvolgere numerose fasi, che potrebbero doversi eseguire più volte L ottimzzazione può determinare la scarsa velocità di traduzone, Tuttavia, un ottimizzatore ben progettato può incrementare in modo significativo la velocità di esecuzione del programma spostando o eliminando operazioni non necessarie. Il codice IR prodotto dal traduttore è mappato nel codice macchina target dal generatore di codice. Produce il linguaggio target per una specifica architettura IL programma target è normalmente un codice oggetto rilocabile contenente codice macchina Questa fase fa uso di informazioni dettagliate sulla macchina target e include ottimizzazione legate alla specific macchina cpme register allocation e code scheduling. Il generatore di codice può essere piuttosto complesso, poiché per produrre buon codice target bisogna considerare di molti casi particolari E possibile gnerare i generatori di codice in modo automatico. L'impostazione di base è quella di definire dei template che mettano in corrispondenza le istruzioni low-level IR con le istruzioni target Un noto compilatore che utilizza tecniche di generazione automatica di codice è il compilatore GNU C. GCC è un compilatore fortemente ottimizzato atraverso l utilizzo di un file di descrizione contenente la macchina per più di dieci architetture PC, e di almeno due linguaggi (C and C++). 26

27 Una tabella dei simboli permette alle informazioni di essere associate con con gli identificatori ed è condivisa dalle diverse fasi di compilazione. Ogni volta che un identificatore viene utilizzato, una tabella di simboli consente di accedere alle informazioni raccolte circa l'identificatore quando la sua dichiarazione è stata elaborata Codice sorgente analizzatore lessicale generatore del codice Codice target token Richiesta token Elemento sintattico analizzatore sintattico - semantico Richiesta elemento sintattico 27

28 Front-end Back-end Linguaggio sorgente Linguaggio intermedio Linguaggio oggetto Front-end O(n) o O(nlogn) errori Back-end NPC Front end : dipendenza da linguaggio sorgente - indip. da macchina (analisi e generazione codice intermedio...) Back end : indipendenza da linguaggio sorgente - dip. da macchina (ottimiz. e generazione codice) Front e back end si possono riutilizzare separatamente per nuovi compilatori Passate una singola passata può bastare per più fasi (interfogliate durante la passata) (es: analisi e generazione codice intermedio in una sola passata "guidata" da analiz. sintattico) 28

29 Ridurre il numero di passate diminuisce tempo - aumenta memoria richiesta tecnica del backpatching per raggruppare generazione di codice intermedio e oggetto si lasciano "vuoti" gli indirizzi non deducibili una lista collega tutti i "buchi" relativi alla stessa entry nella symbol table i "buchi" si riempiono quando si arriva ad avere le informazioni necessarie Utilizzando un compilatore a due passi è necessario un una rappresentazione intermedia (IL = intermediate language) il front-end traduce il codice corretto in IL il back-and traduce il codice in formato IL nel target code Un compilatore a due passi rende più semplice la costruzione di un compilatore per un nuovo processore (retargeting) consente di progettare compilatori con multipli front-end Linguaggio intermedio di alto livello: gli operatori del linguaggio sorgente sono ancora presenti nel linguaggio Linguaggio intermedio di basso livello: gli operatori sorgenti sono tradotti in altri più semplici o specializzati if cond then ramo1 else ramo2 Ifop cond ramo1 ramo2 Jump iffalse cond etich2 ramo1 jump etich_uscita etich2: ramo2 etich_uscita 29

30 Codice PASCAL Codice PASCAL Codice PASCAL Codice PASCAL Front-end per PASCAL Compilatore PASCAL per il processore P1 Compilatore PASCAL per il processore P2 Front-end per PASCAL Front-end per PASCAL Compilatore PASCAL per il processore P3 Compilatore PASCAL per il processore P4 Front-end per PASCAL Back-end per processore P1 Back-end per processore P2 Back-end per processore P3 Back-end per processore P4 Oggetto per P1 Oggetto per P2 Oggetto per P3 Oggetto per P4 Codice PASCAL Codice C Codice ADA Front-end per PASCAL Front-end per C Front-end per ADA Back-end per processore P1 Back-end per processore P2 Back-end per processore P3 3 front-end + 4 back-end = 12 compilatori Back-end per processore P4 30

31 Codice sorgente ANALISI LESSICALE L1 ANALISI SINTATTICA L2 L4 ANALISI DELLE DICHIARAZIONI L3 ANALISI DEI NOMI ANALISI DEI CORPI L5 SELEZIONE DEI CODICI OPER. L7 Codice oggetto ASSEMBLAGGIO CODICE Analisi lessicale: elimina spazi, commenti e transcodifica gli identificatori in interi Analisi sintattica: esegue una analisi sintattica e produce una rappresentazione intermedia tramite un albero sintattico linearizzato nella postfissa Analisi dei nomi: sostituisce alla codifica dei nomi un preciso riferimento alla dichiarazione dello stesso risolvendo le omonimie Analisi delle dichiarazioni: assegna un indirizzo virtuale ad ogni variabile e analizza le strutture dati. Le informazioni raccolte sono distribuite nel testo e non raccolte in apposite tabelle dei simboli Analisi dei corpi: verifica la compatibilità dei tipi degli operandi, degli operatori e specifica ulteriormente la codifica degli operatori Selezione dei codici operativi: calcola l occupazione di memoria per le istruzioni generate da un blocco e raccoglie le etichette in una tabella con accanto gli indirizzi 31

32 Scanner Parser Symbol Table Semantic checker Intermediate code generator Error Handler Optimizer Code generator Optimizer tool di software development general- purpose + tool specializzati Tool per il progetto automatico di parti di compilatori scanner generators: producono analizzatori lessicali parser generators: producono analizzatori sintattici syntax- directed translator engines: producono collezioni di routine che visitanoil parse tree e generano il codice intermedio ogni nodo una o più traduzioni... automatic code generators: prendono regole per tradurre da ling. intermedio in ling. Macchina soluzioni alternative gestite con "template matching data-flow engines: analisi data- flow per ottimizzare il codice fornisce info su come si propagano i dati da una parte all'altra del programma - intervento dell'utente 32

33 Analisi lessicale Regular Grammars Finite State Automata Regular Expressions Analisi sintattica Grammatiche non contestuali (Context-Free Grammars CFGs) Generalmente i parser CFG hanno una complessita O(n 3 ) Non ogni elemento linguistico in un linguaggio di programmazione puo essere trattato come grammatica non contestuale Analisi semantica Traduzione diretta alla sintassi (Syntax-directed translation) Grammatiche ad attributi (Attribute grammars) Altri approcci piu sofisticati Code generation: Pattern matching Euristica Soluzioni ad-hoc Tabella dei simboli 33

34 Linguaggio sorgente C-like. Linguaggio target Java JVM, utilizzando l assembler Jasmin. Programma sorgente a = bb+abs(c-7); Lo scanner ragruppa i caratteri in tokens, considerate le unità base del programma a = bb+abs(c-7); Dopo le operazione di scanner avremo quindi la seguente sequenza di token : Ida Asg Idbb Plus Idabs Lparen Idc Minus IntLiteral7 Rparen Semi Il parser ragruppa i tokens nei costrutti del linguaggio (espressioni, istruzioni, dichiarazioni) rappresentandole in forma di albero: Il type checker risolve i tipi e lega le dichiarazioni con il suo scope: 34

35 Infine il codie JVM viene generato per ogni nodo dell albero iload 3 ; push local 3 (bb) iload 2 ; push local 2 (c) ldc 7 ; Push literal 7 isub ; compute c-7 invokestatic java/lang/math/ abs(i)i iadd ; compute bb+abs(c-7) istore 1 ; store result into local 1(a) programma sorgente Compilatore dati Programma oggetto errori risultati programma sorgente dati Interprete risultati errori 35

36 Ci sono due tipi diversi di interpreti che supportano l'esecuzione di programmi, interprete della macchina interprete del linguaggio. Machine Interpreters Le macchine interpreti simulano l esecuzione di un programma compilato per una particolare architettura. Java usa un interprete bytecode per simulare l effetto del programma compilato per la JVM. I programmi come SPIM simula l esecuzione di programma MIPS su un computer non-mips. Language Interpreters L interprete del linguaggio simula l effetto dell esecuzione di un programma senza compilarlo in un particolare instruction set (reale o virtuale). Una forma di IR (per esempio un AST) viene utilizzato per l esecuzione. È possibile eseguire modifiche ed aggiunte al codice durante l esecuzione, ciò consente un debug interattivo. Tale modifiche possono essere gestite agevolmente se il linguaggio non gestisce blocchi strutturati A seconda della struttura del linguaggio, le modifiche del programma possono richiedere reparsing o ripetute analisi semantica. Gli interpreti fornisco un miglior diagnostico. L analisi del testo d'origine è mescolato con l'esecuzione del programma, in questo modo è disponibile una miglior diagnostica e fornisce la possibilita di un debug interattivo In Python, per esempio,, qualsiasi variabile stringa può essere interpretata come una espressione Python o dichiarazione ed eseguita. 36

37 Gli interpreti facilitano il supporto per linguaggi in cui il tipo di una variabile può cambiare dinamicamente (ad esempio, Python o Scheme). Il programma utente viene continuamente riesaminato durante l'esecuzione, per cui i simboli non hanno un tipo fisso. Le associazioni varibile-tipo fluide sono molto più fastidiose per i compilatori, dal momento che i cambiamenti dinamici del tipo rendono la traduzione diretta in codice macchina difficile o impossibile Gli interpreti supportona l Indipendenza dalla macchina. Tutte le operazioni sono eseguite all interno dell interprete. Non è possibile effettuare ottimizzazione del codice Durante l esecuzione il testo del programma è continuamente riesaminato, i bindings, i tipi e le operazioni sono ricomputate anche ad ogni uso. Per linguaggi molto dinamici questo rappresenta un overheads 100:1 (o peggiore) nella velocitò di esecuzione rispetto al codice compilato. Per linguaggi pù statici (come C o Java), il degrado della velocita de dell ordine di 10:1. Il tempo di Startup per piccoli programmi è lento dato che deve essere caricato l interprete e il programma deve essere partialmente ricompilato prima dell esecuione 37

38 Si può essere in presenza di un sostanziale overhead in spazio. L'interprete e tutte le routine di supporto di solito devono essere tenuti a disposizione. Il programma sorgente spesso non è compatto come se fosse compilato. Cio può causare una limitazione nella dimenzione dei programmi. Naturalmente, molti linguaggi (tra cui, C, C++) hanno gli interpreti (per il debug e lo sviluppo del programma) e i compilatori (per la produzione dell applicazione). Alcuni linguaggi presentano traduzioni ibride Interprete Semplice da implementare supporto Built-in a run-time lento Compilatori Richiedono un significativo sforzo per l implementazione Richiedono un supporto a run-time (e.g., garbage collector) Veloci consentono l ottimizzazione del codice target Soluzioni ibride Esempi: interpreti bytecode per Perl, Java 38

Corso di Progetto di compilatori ed interpreti

Corso di Progetto di compilatori ed interpreti Corso di Progetto di compilatori ed interpreti Corso di Laurea Specialistica in Ingegneria Informatica A.A. 2006-2007 Requisiti preliminari e obiettivi Requisiti preliminari Conoscenza dei linguaggi di

Dettagli

Corso di Progetto di compilatori ed interpreti

Corso di Progetto di compilatori ed interpreti Corso di Progetto di compilatori ed interpreti Corso di Laurea Specialistica in Ingegneria Informatica A.A. 2009-2010 Requisiti preliminari e obiettivi Requisiti preliminari Conoscenza dei linguaggi di

Dettagli

Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012. Linguaggi Formali e Compilatori. Compilatori. Giacomo PISCITELLI

Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012. Linguaggi Formali e Compilatori. Compilatori. Giacomo PISCITELLI Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012 Linguaggi Formali e Compilatori Compilatori Giacomo PISCITELLI I traduttori Genericamente, i programmi responsabili della traduzione

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO Linguaggio macchina Uno per ogni processore o famiglia di processori Linguaggio assembler Versione simbolica di quello macchina. LINGUAGGI DI ALTO

Dettagli

Principi dell ingegneria del software Relazioni fra

Principi dell ingegneria del software Relazioni fra Sommario Principi dell ingegneria del software Leggere Cap. 3 Ghezzi et al. Principi dell ingegneria del software Relazioni fra Principi Metodi e tecniche Metodologie Strumenti Descrizione dei principi

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 3-Compilatori e interpreti 1 Prerequisiti Principi di programmazione Utilizzo di un compilatore 2 1 Introduzione Una volta progettato un algoritmo codificato in un linguaggio

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

Dettagli

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE Relatore: prof. Michele Moro Laureando: Marco Beggio Corso di laurea in Ingegneria Informatica Anno Accademico 2006-2007

Dettagli

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi

Dettagli

Programmi. Algoritmi scritti in un linguaggio di programmazione

Programmi. Algoritmi scritti in un linguaggio di programmazione Programmi Algoritmi scritti in un linguaggio di programmazione Sistema operativo:programma supervisore che coordina tutte le operazioni del calcolatore Programmi applicativi esistenti Sistemi di videoscrittura

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Analizzatore lessicale o scanner

Analizzatore lessicale o scanner Analizzatore lessicale o scanner Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Lo scanner, attraverso un esame carattere per carattere dell'ingresso,

Dettagli

Dispensa 3. 1.1 YACC: generalità

Dispensa 3. 1.1 YACC: generalità Dispensa 3 1.1 YACC: generalità Il tool Yacc (acronimo per Yet Another Compiler Compiler) è uno strumento software che a partire da una specifica grammaticale context free di un linguaggio scritta in un

Dettagli

ISTITUTO TECNICO ECONOMICO MOSSOTTI

ISTITUTO TECNICO ECONOMICO MOSSOTTI CLASSE III INDIRIZZO S.I.A. UdA n. 1 Titolo: conoscenze di base Conoscenza delle caratteristiche dell informatica e degli strumenti utilizzati Informatica e sistemi di elaborazione Conoscenza delle caratteristiche

Dettagli

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2

Dettagli

Linguaggi e Traduttori: Introduzione al corso

Linguaggi e Traduttori: Introduzione al corso Linguaggi e Traduttori: Introduzione al corso Armando Tacchella Sistemi e Tecnologie per il Ragionamento Automatico (STAR-Lab) Dipartimento di Informatica Sistemistica e Telematica (DIST) Università di

Dettagli

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE hardware Firmware, software memorizzato su chip di silicio Sistema Operativo venduto con l, comprende vari programmi di gestione del sistema Applicativo,

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Il memory manager. Gestione della memoria centrale

Il memory manager. Gestione della memoria centrale Il memory manager Gestione della memoria centrale La memoria La memoria RAM è un vettore molto grande di WORD cioè celle elementari a 16bit, 32bit, 64bit (2Byte, 4Byte, 8Byte) o altre misure a seconda

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

Access. P a r t e p r i m a

Access. P a r t e p r i m a Access P a r t e p r i m a 1 Esempio di gestione di database con MS Access 2 Cosa è Access? Access e un DBMS che permette di progettare e utilizzare DB relazionali Un DB Access e basato sui concetti di

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

Basi di Dati Relazionali

Basi di Dati Relazionali Corso di Laurea in Informatica Basi di Dati Relazionali a.a. 2009-2010 PROGETTAZIONE DI UNA BASE DI DATI Raccolta e Analisi dei requisiti Progettazione concettuale Schema concettuale Progettazione logica

Dettagli

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI Fondamenti di Informatica - D. Talia - UNICAL 1 Specifica di un algoritmo Primo approccio, scrittura diretta del programma: la soluzione coincide con la codifica

Dettagli

Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni

Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni Fondamenti di Informatica Modulo 1 Programma dell'a.a. 2003/2004 Luigi Romano Dipartimento di Informatica

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via B. Castiglione 59-00142 Roma Docente Raffaele Nicolussi rnicolussi@fub.it Lezioni

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi formativi Introdurre i principi del funzionamento di un elaboratore e della programmazione. Presentare gli approcci elementari alla soluzione di problemi (algoritmi)e al progetto di strutture

Dettagli

Introduzione. Informatica B. Daniele Loiacono

Introduzione. Informatica B. Daniele Loiacono Introduzione Informatica B Perchè studiare l informatica? Perchè ha a che fare con quasi tutto quello con cui abbiamo a che fare ogni giorno Perché è uno strumento fondamentale per progettare l innovazione

Dettagli

Programmazione ad Oggetti. Java Parte I

Programmazione ad Oggetti. Java Parte I Programmazione ad Oggetti Java Parte I Overview Caratteristiche generali 1 Caratteristiche generali Un moderno linguaggio orientato agli oggetti Pensato per lo sviluppo di applicazioni che devono essere

Dettagli

Cosa è un foglio elettronico

Cosa è un foglio elettronico Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti

Dettagli

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni Linguaggi per COMUNICARE Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni Sintassi e semantica dei linguaggi Un informazione può : Essere

Dettagli

Metodologie di programmazione in Fortran 90

Metodologie di programmazione in Fortran 90 Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di

Dettagli

CPU. Maurizio Palesi

CPU. Maurizio Palesi CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore

Dettagli

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi

Dettagli

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI Documenti su Internet LINGUAGGI DI MARKUP Internet permette (tra l altro) di accedere a documenti remoti In generale, i documenti acceduti via Internet sono multimediali, cioè che possono essere riprodotti

Dettagli

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042) INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042) Gli elaboratori utilizzano memoria per Dati da elaborare Istruzioni eseguite dall elaboratore software differenti risoluzione problemi differenti Algoritmo

Dettagli

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO CLASSE DISCIPLINA MODULO Conoscenze Abilità e competenze Argomento 1 Concetti di base Argomento 2 Sistema di elaborazione Significato dei termini informazione, elaborazione, comunicazione, interfaccia,

Dettagli

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Lezione 3 Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.: +39

Dettagli

La Macchina Virtuale

La Macchina Virtuale Università degli Studi di Palermo Dipartimento di Ingegneria Informatica Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Anno Accademico 2008/2009 Docente: ing. Salvatore

Dettagli

Il Sistema Operativo (1)

Il Sistema Operativo (1) E il software fondamentale del computer, gestisce tutto il suo funzionamento e crea un interfaccia con l utente. Le sue funzioni principali sono: Il Sistema Operativo (1) La gestione dell unità centrale

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Richiami di informatica e programmazione

Richiami di informatica e programmazione Richiami di informatica e programmazione Il calcolatore E una macchina usata per Analizzare Elaborare Collezionare precisamente e velocemente una grande quantità di informazioni. Non è creativo Occorre

Dettagli

Ottimizzazione delle interrogazioni (parte I)

Ottimizzazione delle interrogazioni (parte I) Ottimizzazione delle interrogazioni I Basi di Dati / Complementi di Basi di Dati 1 Ottimizzazione delle interrogazioni (parte I) Angelo Montanari Dipartimento di Matematica e Informatica Università di

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi) Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) 3. (testo di riferimento: Bellini-Guidi) Ing. Agnese Pinto 1 di 28 Linguaggi di programmazione Un programma è un algoritmo

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio Il Concetto Intuitivo di Calcolatore Fondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini I Problemi e la loro Soluzione Problema: classe

Dettagli

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Corso di INFORMATICA 2 (Matematica e Applicazioni) Università di Camerino Scuola di Scienze e Tecnologie Sezione di Matematica Corso di INFORMATICA 2 (Matematica e Applicazioni) Anno Accademico 2014/15 3 Anno Primo Semestre Docenti: Paolo Gaspari Roberto

Dettagli

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report Facoltà di Lingue e Letterature Straniere Le QUERY 2 Che cos è una Query? Una Query rappresenta uno strumento per interrogare un database.

Dettagli

Il Software. Il software del PC. Il BIOS

Il Software. Il software del PC. Il BIOS Il Software Il software del PC Il computer ha grandi potenzialità ma non può funzionare senza il software. Il software essenziale per fare funzionare il PC può essere diviso nelle seguenti componenti:

Dettagli

Introduzione all Information Retrieval

Introduzione all Information Retrieval Introduzione all Information Retrieval Argomenti della lezione Definizione di Information Retrieval. Information Retrieval vs Data Retrieval. Indicizzazione di collezioni e ricerca. Modelli per Information

Dettagli

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio AXO Architettura dei Calcolatori e Sistema Operativo processo di assemblaggio linguaggio assembly è il linguaggio simbolico che consente di programmare un calcolatore utilizzando le istruzioni del linguaggio

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Dispensa di database Access

Dispensa di database Access Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di

Dettagli

Analisi e Verifica di Programmi Laboratorio di AVP

Analisi e Verifica di Programmi Laboratorio di AVP Analisi e Verifica di Programmi Laboratorio di AVP Corso di Laurea in Informatica AA 2004-05 Tino Cortesi Analisi e Verifica Cosa Individuare proprietà interessanti dei nostri programmi: Valori prodotti,

Dettagli

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1 IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza

Dettagli

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

Dettagli

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso Informazioni generali Docente: Prof.ssa Dora Giammarresi: giammarr@mat.uniroma2.it Tutor:??? Informazioni generali

Dettagli

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.

Dettagli

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico Introduzione alle basi di dati Introduzione alle basi di dati Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS Gestione delle

Dettagli

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA BOZZA 23/07/2008 INDICE 1. PERCHÉ UNA NUOVA VERSIONE DEI MODULI DI RACCOLTA DATI... 3 2. INDICAZIONI GENERALI... 4 2.1. Non modificare la struttura dei fogli di lavoro... 4 2.2. Cosa significano

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Sommario Introduzione Definizione di WCET Importanza del WCET Panoramica dei classici metodi per calcolare il WCET [1] Utilizzo di

Dettagli

EXPLOit Content Management Data Base per documenti SGML/XML

EXPLOit Content Management Data Base per documenti SGML/XML EXPLOit Content Management Data Base per documenti SGML/XML Introduzione L applicazione EXPLOit gestisce i contenuti dei documenti strutturati in SGML o XML, utilizzando il prodotto Adobe FrameMaker per

Dettagli

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione Lezione 4 La Struttura dei Sistemi Operativi Introduzione Funzionamento di un SO La Struttura di un SO Sistemi Operativi con Struttura Monolitica Progettazione a Livelli di un SO 4.2 1 Introduzione (cont.)

Dettagli

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10 Il Software e Il Sistema Operativo Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10 Cosa Impareremo Programmi e Processi Struttura del Sistema Operativo Sviluppo di Programmi I files e la loro

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella Complessità del Software Software applicativo Software di sistema Sistema Operativo Hardware 2 La struttura del

Dettagli

Gestione della Memoria

Gestione della Memoria Gestione della Memoria Idealmente la memoria dovrebbe essere grande veloce non volatile Gerarchia di memorie Disco: capiente, lento, non volatile ed economico Memoria principale: volatile, mediamente grande,

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

Architettura del calcolatore

Architettura del calcolatore Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L architettura dell hardware di un calcolatore reale

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

Dettagli

Architetture software

Architetture software Corso di Laurea Magistrale in Ingegneria Informatica Corso di Ingegneria del A. A. 2013-2014 Architettura software 1 Architetture software Sommario Definizioni 2 Architettura Definizione. L architettura

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 PRESTAZIONI DEL CALCOLATORE Massimiliano Giacomin Due dimensioni Tempo di risposta (o tempo di esecuzione): il tempo totale impiegato per eseguire un task (include

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 08 Traduzione ed esecuzione di programmi Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente materiale didattico

Dettagli

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza

Dettagli

con ANTLR tesi di laurea Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505

con ANTLR tesi di laurea Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505 tesi di laurea con ANTLR Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505 Obiettivo Analisi statica di codice sorgente, realizzato in javascript,

Dettagli

Tecniche di Simulazione: Introduzione. N. Del Buono:

Tecniche di Simulazione: Introduzione. N. Del Buono: Tecniche di Simulazione: Introduzione N. Del Buono: 2 Che cosa è la simulazione La SIMULAZIONE dovrebbe essere considerata una forma di COGNIZIONE (COGNIZIONE qualunque azione o processo per acquisire

Dettagli

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software BDX 3D Editor è un programma che permette di navigare ed editare texture in un qualsiasi modello 3D.E compatibile con i software in grado di esportare

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 1 Sistema software 1 Prerequisiti Utilizzo elementare di un computer Significato elementare di programma e dati Sistema operativo 2 1 Introduzione In questa Unità studiamo

Dettagli

La macchina programmata Instruction Set Architecture (1)

La macchina programmata Instruction Set Architecture (1) Corso di Laurea in Informatica Architettura degli elaboratori a.a. 2014-15 La macchina programmata Instruction Set Architecture (1) Schema base di esecuzione Istruzioni macchina Outline Componenti di un

Dettagli

Fondamenti di Informatica Ingegneria Clinica Lezione 19/10/2009. Prof. Raffaele Nicolussi

Fondamenti di Informatica Ingegneria Clinica Lezione 19/10/2009. Prof. Raffaele Nicolussi Fondamenti di Informatica Ingegneria Clinica Lezione 19/10/2009 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via B. Castiglione 59-00142 Roma Docente Raffaele Nicolussi rnicolussi@fub.it Lezioni

Dettagli

Sistemi elettronici per la sicurezza dei veicoli: presente e futuro. Il ruolo della norma ISO 26262 per la Sicurezza Funzionale

Sistemi elettronici per la sicurezza dei veicoli: presente e futuro. Il ruolo della norma ISO 26262 per la Sicurezza Funzionale La Sicurezza Funzionale del Software Prof. Riccardo Sisto Ordinario di Sistemi di Elaborazione delle Informazioni Dipartimento di Automatica e Informatica Sicurezza Funzionale del Vari Aspetti Sicurezza

Dettagli

La Progettazione Concettuale

La Progettazione Concettuale La Progettazione Concettuale Università degli Studi del Sannio Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica CorsodiBasidiDati Anno Accademico 2006/2007 docente: ing. Corrado Aaron Visaggio

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Piano di gestione della qualità

Piano di gestione della qualità Piano di gestione della qualità Pianificazione della qualità Politica ed obiettivi della qualità Riferimento ad un eventuale modello di qualità adottato Controllo della qualità Procedure di controllo.

Dettagli

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro Introduzione alle tecnologie informatiche Strumenti mentali per il futuro Panoramica Affronteremo i seguenti argomenti. I vari tipi di computer e il loro uso Il funzionamento dei computer Il futuro delle

Dettagli

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia L informatica È la disciplina scientifica che studia INTRODUZIONE I calcolatori, nati in risposta all esigenza di eseguire meccanicamente operazioni ripetitive Gli algoritmi, nati in risposta all esigenza

Dettagli

ToolChain: Come Generare Applicazioni in Linguaggio Macchina

ToolChain: Come Generare Applicazioni in Linguaggio Macchina ToolChain: Come Generare Applicazioni in Linguaggio Macchina Luca Abeni e Luigi Palopoli March 30, 2015 La Lingua della CPU Una CPU capisce e riesce ad eseguire solo il linguaggio macchina Linguaggio di

Dettagli

ARCHITETTURE DI SISTEMI INTEGRATI PER APPLICAZIONI SPECIFICHE. Design Flow

ARCHITETTURE DI SISTEMI INTEGRATI PER APPLICAZIONI SPECIFICHE. Design Flow ARCHITETTURE DI SISTEMI INTEGRATI PER APPLICAZIONI SPECIFICHE Design Flow Prof. Luigi Raffo Dipartimento di ingegneria elettrica ed elettronica Università di Cagliari Flusso di progetto classico su silicio

Dettagli

Software. Definizione, tipologie, progettazione

Software. Definizione, tipologie, progettazione Software Definizione, tipologie, progettazione Definizione di software Dopo l hardware analizziamo l altra componente fondamentale di un sistema di elaborazione. La macchina come insieme di componenti

Dettagli

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

Dettagli