Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio11:esercitazioni:esercitazione3

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
informatica:sol:laboratorio11:esercitazioni:esercitazione3 [10/03/2011 alle 11:24 (14 anni fa)] – [Esercizio 6. Approfondiamo l'uso di valgrind (e alcune opzioni utili di gcc ...)] Susanna Pelagattiinformatica:sol:laboratorio11:esercitazioni:esercitazione3 [21/03/2011 alle 16:01 (14 anni fa)] (versione attuale) – [Esercizio 5. Approfondiamo l'uso di valgrind (e alcune opzioni utili di gcc ...)] Susanna Pelagatti
Linea 4: Linea 4:
  
 ===== Esercizio 1: Getting started -- Preprocessing, compilazione e linking ===== ===== Esercizio 1: Getting started -- Preprocessing, compilazione e linking =====
-0.1) Compilare ed eseguire il seguente programma:+1) Compilare ed eseguire il seguente programma:
 <code c> <code c>
 #include <stdio.h> #include <stdio.h>
Linea 22: Linea 22:
 Chi segnala un errore? E' fallita la fase di preprocessing, la compilazione o il linking? Cosa contine il modulo oggetto se specifico l'opzione -c? Come si risolve il problema? Chi segnala un errore? E' fallita la fase di preprocessing, la compilazione o il linking? Cosa contine il modulo oggetto se specifico l'opzione -c? Come si risolve il problema?
  
-0.2) Cosa accade se eliminiamo la linea+2) Cosa accade se eliminiamo la linea
 <code c> <code c>
 #include <math.h> #include <math.h>
Linea 28: Linea 28:
 ? A questo punto cosa va storto? Sapete interpretare i messaggi a video e stabilire chi li ha scritti e perche'? Viene generato l'eseguibile? ? A questo punto cosa va storto? Sapete interpretare i messaggi a video e stabilire chi li ha scritti e perche'? Viene generato l'eseguibile?
  
-0.3) Generare il modulo oggetto con+3) Generare il modulo oggetto con
 <code> <code>
 gcc -Wall -pedantic -c ff.c gcc -Wall -pedantic -c ff.c
Linea 35: Linea 35:
 Utilizzare //objdump, nm, readelf// per capire cosa contengono la tabella di rilocazione, la tabella dei simboli esportati ed esterni, le sezioni data, BSS e codice. (utilizzare il man e cercare su google). Utilizzare //objdump, nm, readelf// per capire cosa contengono la tabella di rilocazione, la tabella dei simboli esportati ed esterni, le sezioni data, BSS e codice. (utilizzare il man e cercare su google).
  
-0.4) Usare l'opzione //-E// e la //-S// del gcc: che cosa succede? Cosa accade specificando il flag -g assieme a -S? +4) Usare l'opzione //-E// e la //-S// del gcc: che cosa succede? Cosa accade specificando il flag -g assieme a -S? 
  
-===== Esercizio 2: Makefile per la libreria di liste ===== 
-Con riferimento agli esercizi 1 e 3 della [[informatica:sol:laboratorio11:esercitazioni:esercitazione1|esercitazione 1 ]], definire un file Makefile che contenga  
-  * le regole per generare correttamente main.o e lista.o  
-  * la regola PHONY ''lib'' per generare correttamente la libreria libList.a 
-  * la regola per generare l'eseguibile a partire da oggetti e librerie 
-  * un target PHONY ''cleanall'' che elimini gli oggetti e gli eseguibili 
  
-utilizzare dove possibile le regole implicite, le variabili e le convenzioni viste a lezione. Usare ''gcc -MM'' per generare automaticamente le liste di dipendenze per i target relativi ai moduli oggetto. 
  
-===== Esercizio 3: Macro con parametri, macro SOMMA =====+ 
 +===== Esercizio 2: Macro con parametri, macro SOMMA =====
 Usare le macro con parametri per definire una macro che somma (operatore +) i propri argomenti Usare le macro con parametri per definire una macro che somma (operatore +) i propri argomenti
 <code c> <code c>
Linea 58: Linea 52:
  
  
-===== Esercizio 4: Macro con parametri, macro FATTORIALE =====+===== Esercizio 3: Macro con parametri, macro FATTORIALE =====
  
 Scrivere una macro con parametri che calcoli il fattoriale di un numero N, passato come parametro e ne stampi il risultato. Ad esempio, posso utilizzare la macro per calcolare il fattoriale di 4+1 con Scrivere una macro con parametri che calcoli il fattoriale di un numero N, passato come parametro e ne stampi il risultato. Ad esempio, posso utilizzare la macro per calcolare il fattoriale di 4+1 con
Linea 69: Linea 63:
 FATTORIALE(FATTORIALE(4+1))  FATTORIALE(FATTORIALE(4+1)) 
 </code> </code>
-===== Esercizio 5. Liste generiche in C =====+===== Esercizio 4. Liste generiche in C =====
  
 In questo esercizio si richiede di realizzare alcune funzioni che lavorano su liste generiche in C. Una lista generica e' rappresentata con la seguenti struct In questo esercizio si richiede di realizzare alcune funzioni che lavorano su liste generiche in C. Una lista generica e' rappresentata con la seguenti struct
Linea 128: Linea 122:
 e una seconda che ha come chiavi stringhe usando analoghe funzioni per la copia ed il confronto. e una seconda che ha come chiavi stringhe usando analoghe funzioni per la copia ed il confronto.
  
-===== Esercizio 6. Approfondiamo l'uso di valgrind (e alcune opzioni utili di gcc ...) =====+===== Esercizio 5. Approfondiamo l'uso di valgrind (e alcune opzioni utili di gcc ...) =====
 Compilare ed eseguire il codice seguente usando valgrind Compilare ed eseguire il codice seguente usando valgrind
 <code c> <code c>
Linea 160: Linea 154:
 Provare a compilare (dopo averlo salvato in file.c) usando le seguenti opzioni di "gcc" che permettono di rilevare altri errori statici: Provare a compilare (dopo averlo salvato in file.c) usando le seguenti opzioni di "gcc" che permettono di rilevare altri errori statici:
 <code> <code>
-bash$ bash$ gcc -O -pedantic -Wall -Wextra -Wformat=2 -ggdb -o exe file.c +bash$ gcc -O -pedantic -Wall -Wextra -Wformat=2 -ggdb -o exe file.c 
 </code> </code>
 viene segnato qualcosa ? Perche' viene segnato qualcosa ? Perche'
informatica/sol/laboratorio11/esercitazioni/esercitazione3.1299756245.txt.gz · Ultima modifica: 10/03/2011 alle 11:24 (14 anni fa) da Susanna Pelagatti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki