ASM: catena di compilazione
|
|
- Dino Valentini
- 8 anni fa
- Visualizzazioni
Transcript
1 ASM: catena di compilazione Lorenzo Dematté October 2, La nostra Macchina Virtuale Una macchina virtuale o modello di programmazione è l ambiente nel quale i programmi girano. Di solito si parla di macchina virtuale solo nel caso di linguaggi interpretati o a bytecode (come a JVM, la macchina virtuale di Java) ma in realtà tutte il software viene programmato facendo delle assunzioni che vanno oltre quelle della macchina fisica sulla quale girano. E il caso del C/C++ per esempio, dal quale ci aspettiamo alcune funzioni standard; o ancora quando programmiamo utility per sistema operativo Linux, dove spesso si segue lo standard POSIX. In questi 2 casi stiamo programmando, per esempio, la VM ANSI C, o ISO C++, o ancora la VM POSIX. Nel nostro caso, programmando in assembly saremo molto vicini alla macchina fisica, ma anche noi faremo delle assunzioni: il set di istruzioni e opcode Intel a 32 bit (chiamto i386, x86, o ancora ia32) 1 ; un modello di memoria a 32 bit flat (come quelli che si trovano nelle varianti a 32 bit di Windows, Linux e OSX). La nostra VM quindi sarà ia32 con modello di memoria FLAT 2. 2 La catena di compilazione La compilazione é il processo di tradurre un programma scritto in un certo linguaggio (il codice sorgente) in un programma equivalente in un altro linguaggio (codice oggetto). Spesso il codice oggetto é codice macchina eseguibile. Quando compiliamo un programma (come esempio, consideriamo un tipico compilatore C), in realtá stiamo facendo una serie di passaggi di cui la compilazione vera e propria é solo uno: preprocessing compilazione assemblaggio linking 1 Stiamo parlando qui di architettura, non di processori: i vari modelli di processori Intel e AMD implementano tutti il set di istruzioni i386, e quelli piu recenti il set esteso x86. Ogni nuovo modello porta con se qualche nuova estensione, ma di poco conto. 2 L architettura ia32 supporta diversi tipi di gestione della memoria virtuale: segmentazione, paginazione, segmentazione paginata. Il modello FLAT prevede un unico segmento, della dimensione massima indirizzabile (32 bit nel nostro caso). 1
2 Nel preprocessing un singolo file C viene preprocessato, cioé le dichiarazione comincianti con # (#define, #include ecc.) vengono esaminate e sostituite con altro codice. Nella compilazione il codice C viene elaborato e tradotto in codice assembly. Nell assemblaggio, il codice ASM generato viene assemblato, producendo un file oggetto (.o oppure.obj), che contiene codice macchina e tabelle di linking. Durante il linking, un programma detto linker prende l insieme di files oggetto generati, ogni libreria aggiuntiva specificata implicitamente o esplicitamente 3 e li unisce in un unico programma eseguibile, risolvendo le referenze tra i vari files oggetto (tipicamente, chiamate a funzioni). 3 I files oggetto I files oggetto contengono solitamente una tabella di linking, codice macchina e (solo nelle build di debug) simboli di debug. I simboli di debug sono informazioni aggiuntive sui nomi e la locazione nei files sorgenti di funzioni, variabili ecc. Sono quindi una sorta di mappa che permette al debugger di seguire passo passo il codice macchina eseguito e allo stesso tempo mostrare al programmatore variabili e codici in un modo piú leggibile. Ci sono programmi che permettono di visualizzare il contenuto dei file oggetto, come disassamblatori ecc. Per esempio, il tool objdump in ambiente UNIX-like e il tool pedump in Windows. Le tabelle di linking sono usate dal linker per reperire informazioni su dove si trovino e dove ci sia il bisogno di certe funzione. Infatti, ogni file oggetto può usare funzioni definite in un altro file o libreria ed esporre delle funzioni che saranno chiamate da altre librerie o da altri file oggetto. Per esempio: #include <stdio.h> extern int add(int a, int b) { int res; res = a + b; return res; } int main() { int i = 2; int j = 3; } printf("hello %d + %d = %d", i, j, add(i, j)); return i + j; Questo file definisce due funzioni, main and add, e ne usa altre, tra cui printf. printf è dichiarata nel file stdio.h, ma é definita altrove (nella libreria standard 3 La libreria standard del C è un esempio di libraria che viene sempre implicitamente aggiunta; altre librerie sono aggiunte a seconda del sistema operativo (p.e. kernel32.dll sotto Windows) 2
3 Sections: Idx Name Size VMA LMA File off Algn 0.text **4 CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE 1.data **4 ALLOC, LOAD, DATA 2.bss **4 ALLOC 3.stab 00000a **2 CONTENTS, RELOC, READONLY, DEBUGGING 4.stabstr 00004d c14 2**0 CONTENTS, READONLY, DEBUGGING 5.rdata **4 CONTENTS, ALLOC, LOAD, READONLY, DATA SYMBOL TABLE: [ 0](sec -2)(fl 0x00)(ty 0)(scl 103) (nx 1) 0x hello.cpp File [ 2](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 1) 0x Z3addii AUX tagndx 0 ttlsiz 0x0 lnnos 0 next 0 [ 4](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x _main [ 5](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x text AUX scnlen 0x84 nreloc 4 nlnno 0 [ 7](sec 2)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x data AUX scnlen 0x0 nreloc 0 nlnno 0 [ 9](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x bss AUX scnlen 0x0 nreloc 0 nlnno 0 [ 11](sec 4)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x stab AUX scnlen 0xa80 nreloc 5 nlnno 0 [ 13](sec 5)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x stabstr AUX scnlen 0x4d45 nreloc 0 nlnno 0 [ 15](sec 6)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x rdata AUX scnlen 0x13 nreloc 0 nlnno 0 [ 17](sec 0)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x main [ 18](sec 0)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x alloca [ 19](sec 0)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x _printf Figure 1: Parte dell output del porgramma objdump. Notate le tabelle di linking. del C). Queste funzioni e informazioni a loro relative sono inserite nelle tabelle di linking (Fig. 1). 4 GCC: GNU Compiler Collection I tools visti a lezione comprendono i compilatori, assemblatore e linker della GNU. Il vantaggio di questi tools è che sono di qualità abbastanza buona e che sono disponibili su praticamente tutte le piattaforme. Gli svantaggi è che non sono di qualità ottima (per quanto riguarda aderenza a standard e qualità del codice prodotto) e che usano una sintassi diversa da quelle ufficiali Intel e AMD per il codice assembly. 3
4 4.1 Windows Per windows, andremo a usare il porting dei tools GNU dato da cygwin. Quello che é necessario sono le librerie di runtime del C, versione sviluppo, il pacchetto GCC, il pacchetto binutils, e il pacchetto GDB. 4.2 Linux Tutte le distro Linux includono GCC o pacchetti per installarlo. A noi servono le librerie di runtime del C, versione sviluppo, il pacchetto GCC, il pacchetto binutils, e il pacchetto GDB. 4.3 Mac Mac OSX fornisce tutti i tools GNU con il suo pacchetto di sviluppo XCode. Installatelo, oppure se avete una vecchia vesione di OSX considerate MacPorts o Fink (cercate su google). 4.4 Utilizzo Utilizzare i tools é semplice: basta aprire un terminale e lanciare il comando corrispondente: gcc per il compilatore, as per l assembler, ld per il linker. Alcuni switch importanti sono: -g (-gstabs per as) genera i simboli di debugging. NB: va usata su tutti i tools della catena! -o mette l output nel file seguente. -v per il GCC: fa vedere la riga di comando completa dei programmi invocati -E per il GCC: solo preprocessing -S per il GCC: solo preprocessing e generazione codice --save-temps per il GCC: salva i file temporanei (.ii per il file C preprocessato,.s per il codice ASM generato,.o per il file oggetto) Tutti hanno opzioni --help o man pages che spiegano in dettaglio le opzioni. 4.5 Esempio Come esempio, consideriamo una semplice funzione della libreria standard del C: strcpy. La string copy (strcpy) copia una stringa data in input in un altra, usando un buffer pre-allocato dato come input alla funzione. In pratica, la funzione copia carattere per carattere finchè non arriva al terminatore NULL 4 Di seguito, il codice assembler per la funzione: 4 Ricordiamo che una string non é altro che un array di bytes, dove ogni singolo byte é un carattere in codifica ASCII, terminata dal carattere speciale \0 (NULL) che ha il valore di zero. 4
5 .data src:.string "Hello World" dst:.skip 20.text.globl _start _start: movl $src, %eax movl $dst, %ebx whil: movsbl (%eax), %ecx testl %ecx, %ecx jz exit movb movb addl addl jmp (%eax), %dl %dl, (%ebx) $1, %eax $1, %ebx whil exit: movb $0, (%ebx) Per assemblare questo codice, possiamo invocare il comando gcc (che si occuperá di chiamare l assembler ed il linker nel modo corretto), oppure fare a mano i due passi distinti: as -gstabs -o strcyp.s strcpy.o ld -g -o strcpy strcpy.o A seconda del vostro ambiente di esecuzione (shell + sistema operativo), potrebbe essere necessario rinominare l etichetta globale start in main o main: la bash sotto Linux per esempio richiede che il programma lanciato sia sempre linkato alla libreria standard del C (per settare standard input/output/error, l ambiente, i parametri alla riga di comando, ecc.). In questo caso, il vostro programma comincia dentro la libreria del C, in una funzione che poi va a chiamare la main. E quindi necessario che un simbolo main sia definito nella tabella di linking del nostro file oggetto. Seguite l errore dato da vostro linker per il nome decorato (i.e. con il corretto numero di davanti) da usare nel vostro caso. Se provate a eseguire il programma direttamente, fallirà (segmentation fault sotto Linux, GPE sotto Windows), perché non abbiamo fatto nulla per rendere il nostro programma simpatico al sistema operativo. Un moderno sistema operativo chiede a un programma che viene lanciato di fare una serie di operazioni che noi per semplicità non vediamo 5. Possiamo comunque eseguire il 5 In particolare, il programma alla fine deve chiamare una funzione (es: exit sotto Linux) per informare il SO che la sua esecuzione è finita. Altrimenti, il processore continuerà a 5
6 programma passo passo in un debugger, ed esaminare i vari registri e variabili per vedere come le varie istuzioni sono eseguite. 5 Assembly inline Un alternativa é quella di inserire una porzione di codice assembler dentro un programma C, in modo da far fare tutte le operazioni di contorno allo scheletro C e di concentrarci sull algoritmo. Questo modo di scrivere codice ASM si chiama assembler inline. Il GCC ha una sintassi molto complicata per l assembler inline; andiamo a vedere come fare nel caso della strcpy: #include <stdio.h> int main() { char* src = "Hello world"; char dst[20]; asm ( "start: movsbl (%0), %%ecx\n\t" "testl %%ecx, %%ecx\n\t" "jz exit\n\t" "movb "movb "addl "addl "jmp (%0), %%dl\n\t" %%dl, (%1)\n\t" $1, %0\n\t" $1, %1\n\t" whil\n\t" "exit: movb $0, (%1)\n\t" : : "r" (src), "r" (dst) : "%ecx", "%edx"); printf("src: %s, dst: %s\n", src, dst); return 0; } Notiamo subito 2 cose: che l assemble é scritto riga per riga come stringa, inclusi i caratteri di fine riga ( \n ); sull assembly che scriviamo vengono fatte alcune sostituzione, e poi viene passato pari pari all assembler. Seconda cosa, i registri vengono prefissti da 2 % (%%ecx, per esempio) e ci sono dei numeri prefissati da %. I primi hanno 2 segni per distinguerli dai secondi, che sono pseudo-registri che verranno sostituiti con registri (o riferimenti a memoria) reali prima di passare il codice all assemblatore. eseguire il programma, caricando come prossima istruzione la parola di memoria presente dopo l ultima istruzione. Chiaramente, essendo dati garbage, la probabilità di ottenere un Segmentation fault o un Invalid Instruction è prossima a 1 6
7 Cosa viene associato a questi pseudo-registri é definito nelle righe sottostanti che iniziano con : elementi di output: pseudo-registri associati a una variabile. Il valore della variabile alla fine del blocco ASM sará impostato uguale a quello del pseudo-registro. elementi di input: pseudo-registri associati a una variabile. Il valore del registro all inizio del blocco ASM sará impostato uguale a quello della variablile. registri sporcati: lista di registri che abbiamo usato nel nostro blocco. I pseudo registri possono essere di tipo: =r alla variabile verrá dato un registro vero (tra quelli disponibili); la variabile verrá letta e scritta r alla variabile verrá dato un registro vero (tra quelli disponibili); la variabile verrá solo letta m, =m la variabile potrá essere usata dentro al codice come pseudoregistro, ma verrano generati dei riferimenti a memoria. Ci sono molti altri modificatori, e l uso puó diventare complicato. Chi volesse saperne di piú, si riferisca al manuale del GCC. 6 GDB: debugger Vedi appunti lezione e reference card sul sito esse3. 7 La convenzione di chiamata del C (cdecl) Per convenzione di chiamata si intende il contratto che si crea tra codice che chiama la funzione (il chiamante) e la funzione (chiamata). Ovviamente, le due parti si devono mettere d accordo: dove sono memorizzati i valori dei parametri? Dove mettere il valore di ritorno? Quali registri posso sporcare, e quali invece devono rimanere come sono (e, da parte del chiamante, quali registri non posso considerare invariati dopo una chiamata a funzione?) Ci sono molte convenzioni di chiamata; le piu diffuse usano lo stack come luogo principale per lo scambio dei dati. In particolare, per le architetture Intel, c e un registro particolare (EBP) che viene usato per facilitare la creazione e l uso di uno stack frame, una zona dello stack, specifica per ogni funzione, usata per lo scambio di informazioni tra chiamante e chiamato. In particolare, noi ci soffermiamo sulla convenzione di chiamata del C (cdecl): i parametri vengono messi sullo stack dal chiamante, da dx a sx; la f chiamata salva il base pointer del frame precedente, e lo ripristina all uscita; la f chiamata riserva spazio sullo stack per le sue variabili locali; 7
8 la f puo sporcare solo EAX, ECX, EDX; il valore di ritorno va messo/si trova in EAX la funzione chiamante si occupa di togliere i parametri dallo stack (es: perché?) Figure 2: Lo stack frame nella convenzione di chiamata del C La chiamata si divide in 6 fasi, alternate tra chiamante e fun chiamata: chiamante: passaggio dei parametri, trasferimento controllo, salvataggio punto di ritorno (PUSH, CALL); chiamata: prologo (salva EBP, spazio per i locali con SUB); chiamata: esecuzione; chiamata: epilogo (ripristino ESP, EBP, RET); chiamante: pulizia stack dai parametri (ADD); chiamante: salvataggio valore di ritorno. Questa sequenza di operazioni porta alla realizzazione e distruzione dello stack frame, in Fig. 2, come visto a lezione. 8 Altre convenzioni di chiamata su Intel 8
9 Figure 3: Lo stack frame nella convenzione di chiamata del C++, per le funzioni membro Figure 4: Lo stack frame nella convenzione di chiamata del C++, per le funzioni virtuali 9
----------------------------------------------------------------
---------------------------------------------------------------- utilizzo frequente di chiamate a.. A differenza del Pascal, il C permette di operare con assegnamenti e confronti su dati di tipo diverso,
DettagliLaboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono
DettagliFASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"
FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera
DettagliToolChain: 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
DettagliCapitolo 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
DettagliLinguaggio C. Fondamenti. Struttura di un programma.
Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione
DettagliCodifica: 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
DettagliCompilatore risorse display grafico LCD serie IEC-line
Compilatore risorse display grafico LCD serie IEC-line aggiornamento: 22-11-2012 IEC-line by OVERDIGIT overdigit.com 1. Il display grafico LCD I PLC della serie IPC-line possono disporre opzionalmente
DettagliNOZIONI BASE PER ESERCITAZIONI
NOZIONI BASE PER ESERCITAZIONI Shahram Rahatlou Laboratorio di Calcolo, Anno Accademico 2015-16 http://www.roma1.infn.it/people/rahatlou/labcalc/ Sistema Operativo Hardware Software n Routine e programmi
DettagliIntroduzione 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
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliAXO 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
DettagliArchitettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H
Architettura dei calcolatori e sistemi operativi Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H Sommario Il processo di assemblaggio Il collegatore (linker) 2 Assemblatore: traduzione
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
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliLinguaggi 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
DettagliIntroduzione al Linguaggio C
Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C
DettagliHardware di un Computer
Hardware di un Computer Monitor Mouse Tastiera Printer Disk CPU Graphics Adapter USB Controller Parallel Port Disk Controller BUS Memoria RAM Memoria ROM (BIOS) DMA CPU esegue istruzioni, effettua calcoli,
DettagliIl simulatore SPIM SPIM
Il simulatore SPIM Architetture dei Calcolatori (lettere A-I) SPIM SPIM: un simulatore per eseguire programmi assembler scritti per processori MIPS32 Download e materiale relativo alla pagina Web http://www.cs.wisc.edu/~larus/spim.html
DettagliGHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.
*+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti
DettagliProgrammare in Java. Olga Scotti
Programmare in Java Olga Scotti Linguaggi di programmazione linguaggio macchina assembler linguaggi ad alto livello Linguaggi ad alto livello istruzioni comprensibili linguaggio simile a quello naturale
DettagliEsercitazione E7 Immagini
Esercitazione E7 Immagini Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2013/2014 Dipartimento di Scienze Fisiche, Informatiche e Matematiche Università di Modena e Reggio Emilia http://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi
DettagliCOS È 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
DettagliIntroduzione a Dev-C++
Introduzione a Dev-C++ Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Note: Dev-C++ richiede Windows 95/98/NT/2000/XP
DettagliCalcolatori Elettronici Parte X: l'assemblatore as88
Anno Accademico 2013/2014 Calcolatori Elettronici Parte X: l'assemblatore as88 Prof. Riccardo Torlone Università Roma Tre L'assemblatore as88 Disponibile presso: CD-ROM allegato al libro di testo del corso
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
DettagliRegistratori di Cassa
modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...
DettagliIntroduzione a GCC: GNU Compiler Collection
Introduzione a GCC: GNU Compiler Collection Caratteristiche di GCC Compilatore multipiattaforma modulare Disponibile per tutti i principali sistemi operativi Può produrre programmi per la maggior parte
DettagliSistema operativo: Gestione della memoria
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e
DettagliDefinire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};
ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca
DettagliGian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
DettagliUniversità 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,
DettagliSISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09
SISTEMI OPERATIVI Prof. Enrico Terrone A. S: 2008/09 Che cos è il sistema operativo Il sistema operativo (SO) è il software che gestisce e rende accessibili (sia ai programmatori e ai programmi, sia agli
DettagliDall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere
DettagliApproccio 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
DettagliCorso 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
DettagliManuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1
Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ Versione 1.1 Autore Antonio Barbieri, antonio.barbieri@gmail.com Data inizio compilazione 11 maggio 2009 Data revisione 14 maggio 2009 Sommario
DettagliEDICOLA MANAGER 2.2. + EM Importer
EDICOLA MANAGER 2.2 + EM Importer Con la versione 2.2 del programma sono state introdotte numerose novità grazie anche alla collaborazione di colleghi che hanno messo a disposizione utility e documenti
DettagliExcel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it
Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo
DettagliFasi 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
DettagliINSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014)
INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014) Se la Suite risulta già stata installata e quindi sono già presenti le configurazioni di seguito indicate, si prega di andare direttamente alla fine
DettagliGuida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50
Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE 4.50 Inizializzazione: creazione del nuovo progetto e del file sorgente in ambiente JCreator Al lancio del programma si apre la finestra
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliGUIDA ALLA PROGRAMMAZIONE GRAFICA IN C
GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C.:luxx:. PREMESSE In questa guida non verranno trattati i costrutti di flusso, le funzioni, o comunque le caratteristiche del linguaggio, che si danno come presupposte.
DettagliFondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main
Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli
DettagliTutorial per l installazione del J2SE 6 e configurazione del sistema operativo
Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo Ing. Giovanni Ponti DEIS Università della Calabria gponti@deis.unical.it La piattaforma Java mette a disposizione una serie
DettagliFondamenti 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
DettagliIng. Paolo Domenici PREFAZIONE
Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte
Dettagli[http://www.di.univaq.it/muccini/labarch]
[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 3: Introduzione a SPIM
DettagliModulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress
Copyright Andrea Giavara wppratico.com Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress 1. Il pannello amministrativo 2. I dati importanti 3. Creare il database - Cpanel - Plesk
DettagliIstruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)
Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014) Il software per gli esami ICON può essere eseguito su qualunque computer dotato di Java Virtual Machine aggiornata.
DettagliIl calendario di Windows Vista
Il calendario di Windows Vista Una delle novità introdotte in Windows Vista è il Calendario di Windows, un programma utilissimo per la gestione degli appuntamenti, delle ricorrenze e delle attività lavorative
DettagliPer chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass
0_Iniziare con GRASS Avvio di Grass e creazione della cartella del Database di GRASS Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass
DettagliSiamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
DettagliProgrammazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto
Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE
DettagliOffice 2007 Lezione 08
Word: gli stili veloci e i temi Da questa lezione, iniziamo ad occuparci delle innovazioni che riguardano specificamente Word. Cominceremo parlando di stili e temi. Nella filosofia di questo nuovo Word,
DettagliISTRUZIONI PER L INSTALLAZIONE DI MINGW
ISTRUZIONI PER L INSTALLAZIONE DI MINGW Prima di iniziare la procedura di installazione di MinGW dobbiamo dire che il presente software è un compilatore C che non possiede un ambiente di programmazione.
DettagliSystem Center Virtual Machine Manager Library Management
System Center Virtual Machine Manager Library Management di Nicola Ferrini MCT MCSA MCSE MCTS MCITP Introduzione La Server Virtualization è la possibilità di consolidare diversi server fisici in un unico
DettagliELENCO CLIENTI FORNITORI Patch1
ELENCO CLIENTI FORNITORI Patch1 Il pacchetto P15_200ElencoCF_Patch1.exe contiene una serie di aggiornamenti alla procedura di generazione del file contenente l. Download: 1) Assicurarsi di avere una versione
DettagliSistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1
MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati
DettagliMECCANISMI E POLITICHE DI PROTEZIONE 13.1
MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati
Dettagliwww.filoweb.it STAMPA UNIONE DI WORD
STAMPA UNIONE DI WORD Molte volte abbiamo bisogno di stampare più volte lo stesso documento cambiando solo alcuni dati. Potremmo farlo manualmente e perdere un sacco di tempo, oppure possiamo ricorrere
DettagliConvertitori numerici in Excel
ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel
DettagliMac Application Manager 1.3 (SOLO PER TIGER)
Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i
DettagliCalcolatori Elettronici. La memoria gerarchica La memoria virtuale
Calcolatori Elettronici La memoria gerarchica La memoria virtuale Come usare la memoria secondaria oltre che per conservare permanentemente dati e programmi Idea Tenere parte del codice in mem princ e
DettagliAmbienti di Sviluppo
Ambienti di Sviluppo Insieme omogeneo di strumenti adatti allo sviluppo di progetti software. Editor; Compilatori e/o interpreti; Strumenti di test; Applicazioni che permettono di editare / disegnare il
DettagliAppunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio
Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto
DettagliIl 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
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Installazione SOFTWARE JDK ECLIPSE 03/03/2011 2 ALGORITMI E PROGRAMMI PROBLEMA ALGORITMO PROGRAMMA metodo risolutivo linguaggio di
DettagliLezione 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
DettagliGuida all utilizzo del compilatore lcc-win32 per creare una applicazione console
Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console Il compilatore per i linguaggi c e c++ chiamato lcc-win32 è un prodotto gratuito scaricabile dal sito http://www.cs.virginia.edu/~lcc-win32/
DettagliA intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.
Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio
Dettaglipuntatori Lab. Calc. AA 2007/08 1
puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene
DettagliTale attività non è descritta in questa dispensa
Fondamenti di informatica Oggetti e Java ottobre 2014 1 Nota preliminare L installazione e l uso di Eclipse richiede di aver preliminarmente installato Java SE SDK Tale attività non è descritta in questa
DettagliEsercizi su. Funzioni
Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità
DettagliIntroduzione al linguaggio C Gli array
Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome
DettagliDynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica
Dynamic Linking Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica Dynamic Linking Il linking tra i moduli di un programma e le librerie da esso utilizzate può essere Statico
DettagliTutorial sugli ambienti di sviluppo: Eclipse e NetBeans
Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans Prima di tutto va installato il compilatore, ottenibile scaricando ed installando MinGW o CygWin. MinGW: http://www.mingw.org/download.shtml CygWin:
DettagliUniversità di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
DettagliGli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
DettagliMANUALE EDICOLA 04.05
MANUALE EDICOLA 04.05 Questo è il video che si presenta avviando il programma di Gestione Edicola. Questo primo video è relativo alle operazioni di carico. CARICO Nello schermo di carico, in alto a sinistra
DettagliINTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI
INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.
DettagliEDICOLA MANAGER 2.2. + EM Importer
EDICOLA MANAGER 2.2 + EM Importer Con la versione 2.2 del programma sono state introdotte numerose novità grazie anche alla collaborazione di colleghi che hanno messo a disposizione utility e documenti
DettagliDispensa 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
DettagliProtezione. Protezione. Protezione. Obiettivi della protezione
Protezione Protezione La protezione riguarda i meccanismi per il controllo dell accesso alle risorse in un sistema di calcolo da parte degli utenti e dei processi. Meccanismi di imposizione fissati in
DettagliProva Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse
Prova Finale a.a. 2011/2012 Laboratorio 1: Introduzione a Java e Eclipse 1 Java 6 Standard Edition Linguaggio Java (... (javac, Tool di sviluppo Librerie per l'interfaccia grafica Librerie di base Macchina
DettagliDispense di Informatica per l ITG Valadier
La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di
DettagliPer scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
DettagliSistemi 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
DettagliPlate Locator Riconoscimento Automatico di Targhe
Progetto per Laboratorio di Informatica 3 - Rimotti Daniele, Santinelli Gabriele Plate Locator Riconoscimento Automatico di Targhe Il programma plate_locator.m prende come input: l immagine della targa
DettagliIl 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
DettagliScrivere un programma in Java
Programmare in JAVA Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA uff. 0577 234850 - interno: 7102 Stanza 119 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/
DettagliInvio SMS. DM Board ICS Invio SMS
Invio SMS In questo programma proveremo ad inviare un SMS ad ogni pressione di uno dei 2 tasti della DM Board ICS. Per prima cosa creiamo un nuovo progetto premendo sul pulsante (Create new project): dove
DettagliSOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software:
1 SOFTWARE È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software: SOFTWARE DI SISTEMA (o di base), che deve gestire le funzioni
DettagliFPf per Windows 3.1. Guida all uso
FPf per Windows 3.1 Guida all uso 3 Configurazione di una rete locale Versione 1.0 del 18/05/2004 Guida 03 ver 02.doc Pagina 1 Scenario di riferimento In figura è mostrata una possibile soluzione di rete
DettagliGestione dei File in C
Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte
DettagliLinguaggi 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
DettagliEstensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)
Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) User Guide di Mattia Bargellini 1 CAPITOLO 1 Getting Started 1.1 Contenuto del package e Installazione
Dettagli2010 Ing. Punzenberger COPA-DATA Srl. Tutti i diritti riservati.
2010 Ing. Punzenberger COPA-DATA Srl Tutti i diritti riservati. Tutti i diritti riservati la distribuzione e la copia - indifferentemente dal metodo - può essere consentita esclusivamente dalla dittacopa-data.
Dettagli