Creazione di un programma eseguibile. Laboratorio di Calcolo AA2005/062 Livelli di programmazione Si può programmare a diversi livelli utilizzando linguaggi.

Slides:



Advertisements
Presentazioni simili
I Linguaggi di programmazione
Advertisements

Traduzione ed Interpretazione
Linux examples of Buffer overflow attacks
Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
Sottoprogrammi: funzioni e procedure
Preincremento e PostIncremento in C++
Una applicazione complessa non può essere sviluppata in un unico file: sarebbe ingestibile! Deve necessariamente essere strutturata su più file sorgente.
Software di base: Linguaggi di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A1 Introduzione a Java.
Code::Blocks Ambiente di sviluppo.
Code::Blocks Ambiente di sviluppo.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
Procedure e funzioni In linguaggio C.
I linguaggi di programmazione
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
Le funzioni.
3 ottobre 2005Il primo ciclo in Lombardia: esperienze e impegni per la.s. 2005/061 Le scuole primarie e secondarie di primo grado in Lombardia: lo scenario.
Concetti di base: header file, funzione main(),set caratteri C++, token, operatori, espressioni etc. Flusso di controllo, cicli, costrutti.
Programmazione Procedurale in Linguaggio C++
Introduzione alla programmazione
Gruppo di Lavoro Nazionale Open Group TANDEM EMAS e Ag21 delle PA Dott. Daniele Tartari UO Sistemi Gestione Ambientale Provincia di Bologna I risultati.
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Funzioni definite dall’utente
1 Il nostro esempio guida: La costruzione di uno stack.
La Manutenzione degli ascensori: questa sconosciuta
Laboratorio di Linguaggi lezione II Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
LdL - LP1 - ver. 6 - lez aa Linguaggi di programmazione I La ricorsione Prof. Luigi Di Lascio Lezione 10.
7) Creazione di un programma eseguibile
Funzioni. Lab.Calc. AA 2005/062 Astrazione Consiste nell'ignorare i dettagli e concentrarsi sull'essenziale: in particolare ci consente di utilizzare.
Iterazioni (for, do, while). Lab.Calc. AA2005/062 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while 3. for con.
Lab. Calc. AA 2005/061 Classi. Lab. Calc. AA 2005/062 C e C++ Fino a questo punto abbiamo introdotto gli elementi base di qualsiasi linguaggio di programmazione,
Istruzioni di selezione (If/else/switch)
Lab. Calc. AA 2005/061 laboratorio di calcolo AA 2005/06 a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
Vettori e matrici. Lab.Calc. AA2005/062 Vettori Dichiarazione di un vettore di oggetti del tipo Tipo: Tipo identificatore[dimensione]; Uso di un elemento.
Primi Elementi di Programmazione in C++
Lab. Calc. AA 2005/061 puntatori. Lab. Calc. AA 2005/062 Attributi di un oggetto nome o identificatore; tipo o classe; valore o valori; indirizzo;
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Algebra Lineare Esercizi assegnati.
Espressioni condizionali
Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno.
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
Orientarsi con le mappe
Architettura degli Elaboratori II (canale P-Z) Linguaggi e moduli
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Isabella Fortunato - Rimini Sostegno allo sviluppo dellistruzione degli adulti EDALAB.
void binario(int n); …………………
Creazione progetto in C++/DEV
LE SCUOLE sono… ARTEFATTI CULTURALI …Ma… sono………..TUTTE DIVERSE……
INTERFACCIAMENTO ASSEMBLY - C++
Lo sviluppo top down Le funzioni
La progettazione didattica ipermediale
Testi unici compilativi in materia di minoranze
Gena - Applicata - 05/061 Java: javac e java Per compilare una classe: > javac NomeClasse.java  NomeClasse.class javac = invocazione.
Introduzione al C Davide Gadia.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
L’ambiente di sviluppo Visual C++ Docente del corso Prof. Marcello CASTELLANO.
Dal problema all’ algoritmo
Programmazione Assembly
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma “La Sapienza”
Scrivere e compilare programmi
Lezione I Alessandro Dal Palu’ Laboratorio di Programmazione.
Concetti Fondamentali sulla Programmazione
Il software Claudia Raibulet
Laboratorio di Linguaggi... altre D O M A N D E ! Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Fabio Scotti – Università degli Studi di Milano 1 Lezione 1 e 2 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Librerie… Marco D. Santambrogio – Ver. aggiornata al 20 Luglio 2015.
CORRISPONDENZA C++ ASSEMBLER
PROGETTI STRUTTURATI SU PIÙ FILE
Transcript della presentazione:

Creazione di un programma eseguibile

Laboratorio di Calcolo AA2005/062 Livelli di programmazione Si può programmare a diversi livelli utilizzando linguaggi caratterizzati da diversi livelli di astrazione: più basso è il livello più vicino alla macchina (e ai suoi dettagli costruttivi) è il linguaggio. Un programma scritto utilizzando il linguaggio proprio di un livello di programmazione è destinato ad essere tradotto (da un programma traduttore) in un linguaggio di livello inferiore o ad essere eseguito direttamente (da un programma interprete).

Laboratorio di Calcolo AA2005/063 Codice C++

Laboratorio di Calcolo AA2005/064 Esempio di codice in C++ #define SCALA 2 int main( ) { float x=10.; float y=20.; float z; z=x+y; z*=SCALA; return 1; }

Laboratorio di Calcolo AA2005/065 Codice C++ Precompilatore

Laboratorio di Calcolo AA2005/066 Codice C++ Precompilatore Codice C++

Laboratorio di Calcolo AA2005/067 Esempio di codice in C++ precompilato int main( ) { float x=10.; float y=20.; float z; z=x+y; z*=2; return 1; }

Laboratorio di Calcolo AA2005/068 Codice C++ Precompilatore Codice C++ compil atore

Laboratorio di Calcolo AA2005/069 Codice C++ Precompilatore Codice C++ compil atore Codice assembly

Laboratorio di Calcolo AA2005/0610 Esempio di codice assembly.file"prog2.cxx".version"01.01" gcc2_compiled.:.text.align 4.globl main.type main: pushl %ebp movl %esp,%ebp subl $12,%esp movl $ ,-4(%ebp) movl $ ,-8(%ebp) flds -4(%ebp) fadds -8(%ebp) fstps -12(%ebp) flds -12(%ebp) fld %st(0) faddp %st,%st(1) fstps -12(%ebp) movl $1,%eax jmp.L1.align 4 xorl %eax,%eax jmp.L1.align 4.L1: leave ret.Lfe1:.size main,.Lfe1-main.ident"GCC: (GNU) f.1"

Laboratorio di Calcolo AA2005/0611 Codice C++ Precompilatore Codice C++ compil atore Codice assembly assemb ler

Laboratorio di Calcolo AA2005/0612 Codice C++ Precompilatore Codice C++ compil atore Codice assembly assemb ler Codice macchina

Laboratorio di Calcolo AA2005/0613 Esempio di codice macchina

Laboratorio di Calcolo AA2005/0614 Codice C++ Precompilatore Codice C++ compil atore Codice assembly assemb ler Codice macchina linker

Laboratorio di Calcolo AA2005/0615 Codice C++ Precompilatore Codice C++ compil atore Codice assembly assemb ler Codice macchina linker Codice eseguibil e

Laboratorio di Calcolo AA2005/0616 Codice C++ Precompilatore Codice C++ compil atore Codice assembly assemb ler Codice macchina linker Codice eseguibil e

Laboratorio di Calcolo AA2005/0617 Linker Riprendendo il nostro esempio supponiamo di volere visualizzare il risultato finale. Abbiamo già visto che a tale scopo dobbiamo usare la direttiva del precompilatore #include per definire l'oggetto cout e poi dopo avere calcolato z aggiungere l'istruzione cout << "risultato " << z << endl; Ma dove si trova il codice di ostream? Nella libreria (dall'inglese library: biblioteca) del C++ che contiene il codice macchina per tutti gli oggetti predefiniti. Il linker cerca automaticamente il codice cui riferito dall'utente e non presente nel codice sorgente nelle librerie di sistema.

Laboratorio di Calcolo AA2005/0618 Linker E se si volesse usare del codice non di sistema? Per esempio dell'altro codice già scritto dall'utente? Il linker accetta in input più di un file e quindi è sufficiente passagli oltre al programma utente anche gli altri file o librerie contenenti il codice che vuole riutilizzare.

Laboratorio di Calcolo AA2005/0619 Estensione dei file Nella maggior parte dei sistemi operativi il nome dei file è costituito da due parti separate da un punto: nome.estensione Il nome può essere un qualunque identificatore valido, l'estensione in genere identifica il tipo di file e i programmi che accettano file in input generalmente controllano l'estensione per verificarne il tipo. Le estensioni dipendono dal sistema operativo e dai programmi applicativi. In questo corso useremo l'estensione.cc per i file che contengono codice sorgente C++ (estensioni valide sono anche cxx e cpp).

Laboratorio di Calcolo AA2005/0620 Uso di g++ (compilatore GNU) g++ esempio.cc applica precompilatore, compilatore, assembler e linker e produce l'eseguibile a.out g++ esempio.cc -o esempio chiama l'eseguibile esempio g++ esempio.o altrofile.o libreria.a -o esempio invoca il linker, cercando i riferimenti esterni in altrofile.o e in libreria.a

Laboratorio di Calcolo AA2005/0621 Uso di g++ (compilatore GNU) Possiamo anche effettuare i singoli passaggi intermedi usando le opzioni di g++ (consultabili con man g++ ) g++ -E esempio.cc invoca solo il precompilatore (e non salva l'output) g++ -S esempio.cc invoca precompilatore e compilatore e salva il file assembly in esempio.s g++ -c esempio.cc invoca precompilatore, compilatore e assembler e salva il file in linguaggio macchina in esempio.o, può agire anche sul file esempio.s, invocando solo l'assembler.

Laboratorio di Calcolo AA2005/0622 Uso di g++ (compilatore GNU) Output su schermo.cc (sorgente) Applica il precompilatore g++ -E.s (assembly).cc (sorgente) Produce il file in assembly g++ -s.o (linguaggio macchina).cc (sorgente).s (assembly) Produce il file in linguaggio macchina g++ -c a.out, modificabile con l'opzione –o.cc (sorgente).s (assembly).o (linguaggio macchina) Produce l'eseguibile g++ File di output Files accettati in input AzioneComando

Laboratorio di Calcolo AA2005/0623 Output su file.I.cpp (sorgente) Applica il precompilatore cpp.ASM (assembly).cpp (sorgente) Produce il file in assembly bcc -S.obj (linguaggio macchina).cpp (sorgente) Produce il file in linguaggio macchina bcc -c.exe (stesso nome file in ingresso) modificabile con l'opzione –e.cpp (sorgente).obj (linguaggio macchina) Produce l'eseguibile bcc File di outputFiles accettati in inputAzioneComando Per poter compilare un file generato dal precompilatore usare prima: cpp -P- sorgente.cpp e poi: bcc –P sorgente.I (lopzione –P permette di compilare sorgenti con estensione diversa da.cpp) Uso di bcc (compilatore Borland per MS DOS)