Un po' di appunti per compilare e decompilare in Assembler sotto Linux
La sintassi di nasm e' simile a quella di TASM ma ci sono alcuni dettagli per cui non e' sempre possibile compilare codice vecchio senza modifiche
Prima di tutto GEdit non ha preimpostata la colorazione della sintassi dei file .asm ma si puo' rimediare con i comandi
wget http://www.carminebenedetto.net/_downloads/asm-intel.lang
sudo cp asm-intel.lang /usr/share/gtksourceview-3.0/language-specs/
per compilare il codice (compreso della tabella dei simboli per il debug)
nasm -f elf -F dwarf mand_linux.asm
ld mand_linux.o -o mand_linux
per rimuovere i codici di debug (ed ottenere un eseguibile nettamente piu' snello) si puo' aggiungere in fase di link lo switch --strip-all come segue
ld mand_linux.o -o mand_linux --strip-all
per compilare codice a 32 bit su un sistema operativo a 64 bit
nasm -f elf -F dwarf mand_linux.asm
ld -m elf_i386 mand_linux.o -o mand_linux
con nasm si possono compilare anche eseguibili DOS (i vecchi file .COM)
nasm -f bin -o mand_dos.com mand_dos.asm
dosbox mand_dos.com -exit
per compilare codice DOS in formato COM si deve aggiungere in testa al codice la linea
org 100h
il programma DOS puo' essere verificato con DOSBOX
dosbox programma.com -exit
Per decompilare o fare debugging, al posto del complicato gdb, puo' essere molto comodo usare ddd, una IDE di gdb in cui si puo' fare debug step-by-step con breakpoint (tasto destro sulla riga di codice), watch delle variabili e dei valori dei registri del processore
E' anche possibile editare direttamente il codice e ricompilare senza uscire da ddd (questa funzione mi ha creato qualche problema a dire il vero perche' la finestra di debug non sempre e' aggiornata con gli aggiornamenti del codice)
Nel caso di core dump del codice si puo' eseguire
gdb file_eseguibile file_core
seguito dal comando backtrace per capire dove si e' generato il segmentation fault. All'interno di ddd si puo' lanciare l'esecuzione (senza breakpoint), attendere il core dump e poi fare il backtrace direttamente dalla IDE
Visualizzazione post con etichetta GEdit. Mostra tutti i post
Visualizzazione post con etichetta GEdit. Mostra tutti i post
venerdì 22 aprile 2016
lunedì 24 settembre 2012
Compilare con GEdit
Si puo' modificare Gedit per poterlo utilizzare come una IDE veloce per la programmazione mediante l'utilizzo dei plugins che possono essere installati mediante
apt-get install gedit-plugins
Usando il menu' Modifica/Preferenze si giunge al menu sottostante in cui nel tab Plugin sono incluse le estensioni installate che possono essere rese attive cliccando sulla checkbox
Per la compilazione si devono attivare gli Strumenti Esterni
Cliccando su Configura Plugin si puo' vedere che questo si attiva mediante la combinazione CTRL+F8
Per comodita' si puo'attivare anche il plugin Terminale che fa comparire una shell nella finestra di Gedit
Per terminare quindi si inserisce il file sorgente da compilare insieme al suo Makefile e con la pressione del tasto CTRL+F8 questo viene compilato
apt-get install gedit-plugins
Usando il menu' Modifica/Preferenze si giunge al menu sottostante in cui nel tab Plugin sono incluse le estensioni installate che possono essere rese attive cliccando sulla checkbox
Per la compilazione si devono attivare gli Strumenti Esterni
Elenco dei plugin installati |
Configurazione di Strumenti Esterni |
Per comodita' si puo'attivare anche il plugin Terminale che fa comparire una shell nella finestra di Gedit
Gedit con finestra di shell |
Per terminare quindi si inserisce il file sorgente da compilare insieme al suo Makefile e con la pressione del tasto CTRL+F8 questo viene compilato
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...