dal 2015 - visita n. 697
Introduzione
Introduzione

 

Introduzione ASM Linux


A partire da un file sorgente è necessario eseguire due operazioni per ottenere un file eseguibile: la compilazione e il collegamento (linking). Durante la fase di compilazione viene effettuata l'analisi necessaria per verificare la correttezza del codice e, in caso di esito positivo, si passa alla traduzione del sorgente in linguaggio macchina. Dopo la fase di compilazione è necessaria una fase di collegamento (linking) in cui si vanno a collegare più file compilati ed eventuali librerie statiche e/o dinamiche per ottenere un file eseguibile correttamente caricabile dal sistema operativo. L'intero procedimento si riduce, quindi, ai seguenti 2 passaggi:

nasm -f elf -o prova.o prova.asm
gcc -s -o prova prova.o 

oppure ai seguenti 2:

nasm -f elf -o prova.o prova.asm
ld -s -o prova prova.o 

In tutti e due i casi il parametro -o è seguito dal nome del file di output, il parametro -f elf specifica il formato del file oggetto, il parametro -s ordina di effettuare lo strip delle funzioni inutili dal file binario di uscita.

Per facilitare la compilazione si possono, in alternativa, usare i seguenti script, migliorabili sicuramente, ma è una cosa che farò in un secondo tempo:

#!/bin/sh
# ag.sh ::::::::::::::::::::::
nasm -f elf -o $1.o $1.asm
gcc -s -o $1 $1.o
rm $1.o -f
#EOF :::::::::::::::::::::::::

oppure:

#!/bin/sh
# ag.sh ::::::::::::::::::::::::::::::::::::::::
nasm -f elf -o $1.o $1.asm && gcc -s -o $1 $1.o
rm $1.o -f               
#EOF :::::::::::::::::::::::::


#!/bin/sh
# al.sh ::::::::::::::::::::::
nasm -f elf -o $1.o $1.asm
ld -s -o $1 $1.o
rm $1.o -f
#EOF :::::::::::::::::::::::::

oppure:

#!/bin/sh
# al.sh ::::::::::::::::::::::::::::::::::::::::
nasm -f elf -o $1.o $1.asm && ld -s -o $1 $1.o  
rm $1.o -f               
#EOF :::::::::::::::::::::::::

La compilazione con l'uso di uno degli script si eseguirà quindi con:

./al.sh prova

Oltre alla compilazione, lo script provvederà a rimuovere il file oggetto, generalmente non utilizzato, con il comando rm.

L'esecuzione del programma, compilato nella propria cartella di lavoro, si eseguirà digitando:

./prova








Presentazione
Introduzione
Hello World
I/O di Testo
Command Line
Colori e Macro
Introduzione I/O
Porta Parallela


x86 Asm Progranmming
Linux ELF Howto
Linux Assembly Howto


AppuntiAsmx.html
AppuntiAsmx.pdf



Noi veniamo rapiti dalla bellezza di un fiore o dal silenzio di un bosco, e non ci rendiamo conto che dietro quel fiore e quel bosco c'è sempre una lotta per la vita.
Giacomo Leopardi

Valid CSS!
pagina generata in 0.001 secondi