      Esempi di sviluppo ed elaborazione di programmi in C + Assembly
    Architettura degli elaboratori, CdL Informatica, DMI, Univ. Catania

  * 1.  Esempio in cap04/sub32bit *

 o  programma per architettura a 32 bit (elaborabile anche su 
    piattaforma a 64 bit se dotata delle necessarie librerie) 

 o  sorgenti: programma principale in C, sottoprogramma in Assembly

 o  architetture: IA-32, ARMv6

 o  contenuti: sorgenti e shell script per l'elaborazione del programma 
    con compilatore gcc in s.o. Unix/Linux (collaudati su Ubuntu 14.04); 
    per l'esempio ARMv6 e` stato usato il cross-compilatore arm-linux-gcc, 
    disponibile per piattaforme Ubuntu nel repository _rijndael.ece.vt.edu_, 
    URL: http://rijndael.ece.vt.edu/gezel2repo

 o  funzioni dei moduli:

     o  sottoprogramma: conversione di una sequenza di cifre decimali 
        da codice ASCII (una cifra per byte) a BCD (due cifre per byte)

     o  programma principale: collaudo del sottoprogramma con una sequenza 
        predefinita in un array di costanti e visualizzazione della 
        sequenza ottenuta in ritorno 

 o  script ausiliari: l'esecuzione del processo di elaborazione dei 
    sorgenti e` facilitata da alcuni script, che pero` vanno dotati 
    del permesso di esecuzione dopo la decompressione dell'archivio; 
    e.g. su Unix/Linux:

       cd cap04/sub32bit
       chmod 755 */*BCDpacksub


  * 1.1  Esempio in cap04/sub32bit/ia32 *

 o  sequenza di elaborazione: 
     1. assemblaggio del sottoprogramma --> modulo oggetto
     2. compilazione del programma principale e collegamento con il 
        modulo oggetto del sottoprogramma --> programma eseguibile
     3. esecuzione del programma --> output rediretto su file di testo
     4. disassemblaggio del modulo oggetto del sottoprogramma
    rispettivamente mediante gli script: 
       ./asBCDpacksub
       ./gcctestBCDpacksub
       ./runtestBCDpacksub
       ./odBCDpacksub

 o  l'esecuzione dei quattro script nella sequenza di cui sopra, in 
    ciascuno dei tre passi usa -> produce (o sovrascrive) i file: 

       as:  BCDpacksub.asm -> BCDpacksub.o, BCDpacksub.lst
       gcc: testBCDpacksub.c, BCDpacksub.o -> testBCDpacksub, testBCDpacksub.lst
       run: testBCDpacksub -> testBCD.txt
       od:  BCDpacksub.o -> BCDpacksub.dump


  * 1.2  Esempio in cap04/sub32bit/arm *

 o  sequenza di elaborazione: 
     1. cross-assemblaggio del sottoprogramma --> modulo oggetto
     2. cross-compilazione del programma principale e collegamento con 
        il modulo oggetto del sottoprogramma --> programma eseguibile
     3. simulazione ordinaria dell'esecuzione del programma --> 
        output rediretto su file di testo
     4. simulazione interattiva dell'esecuzione del programma con debugger: 
        v. _SimItARM User Guide / Interpreter / Built-In Debugger_
        URL: http://simit-arm.sourceforge.net/guide.html#ums

    rispettivamente mediante gli script: 
       ./arm-linux-asBCDpacksub
       ./arm-linux-gcctestBCDpacksub
       ./simitarm-ematestBCDpacksub
       ./simitarm-demtestCDpacksub

 o  l'esecuzione dei quattro script nella sequenza di cui sopra, in 
    ciascuno dei tre passi usa -> produce (o sovrascrive) i file: 

       arm-linux-as:  BCDpacksub.asm -> BCDpacksub.o, BCDpacksub.lst
       arm-linux-gcc: testBCDpacksub.c, BCDpacksub.o -> testBCDpacksub, testBCDpacksub.lst
       simitarm-ema: testBCDpacksub -> testBCD.txt
       simitarm-dem: testBCDpacksub

  Allo stato attuale, su macchine di architettura x86 o amd l'esempio 
ia32 e` riproducibile fino all'esecuzione, mentre l'esempio arm richiede  
l'installazione di un cross-compilatore (quello qui utilizzato non e` 
l'unico disponibile) e di un simulatore di processore ARM. Quest'ultimo 
tipicamente permette di simulare l'esecuzione del programma ARM generato 
sia in modalita` ordinaria che con il supporto di un debugger interattivo. 
Il simulatore qui usato e` _SimItARM_, open-source per piattaforma IA32/Linux, 
URL: http://simit-arm.sourceforge.net

  Su altre piattaforme (architettura e/o sistema operativo) si puo` impiegare 
l'emulatore generico open-source _QEMU_, URL: http://wiki.qemu.org

--

   _Architettura degli elaboratori, 2014/2015_
   URL: http://www.dmi.unict.it/~scollo/slidy/ae-2015/ae/it/ae.html
   Autore: _G. Scollo_                    URL: http://www.dmi.unict.it/~scollo
   Data: Lunedi` 4 Maggio 2015
   _testo semplice_ di questa pagina      URL: ./README.txt

