Komipilierhilfe

Gerade beschäftige ich mich mit AS dem portablen GNU Assembler. Eigentlich sollte Java die nächste Sprache werden, weil für Android alles in Java geschrieben ist, aber Assembler ist viiiel spannender. Doch kaum damit angefangen, landete ich auch schon wieder beim Shell-Skripten. Denn um einigermaßen Ordnung zu halten liegen meine Quelldateien in einem Ordner namens assembler, die mit dem Linker erzeugten Objektdateien kommen in den Ordner assembler/ofiles und die Programmdateien gehen nach assembler/executables. Um das ein wenig zu automatisieren habe ich dieses kleine Skript erstellt. Vielleicht nutzt es ja irgendwem als Vorlage. Ich finde ja, Beispiele kann es im Netz nicht genug geben.😉

#!/bin/bash

if [ "$1"=*.s ]  # Quelldatei muss die Endung .s haben.
then
as $1 -o ${1%?}o   # Objektdatei mit der Endung o wird erstellt.
ld ${1%?}o -o ${1%??}  # Linker erzeugt Programmdatei ohne Endung.
else
echo "Keine Quelldatei angegeben oder Quelldatei endet nicht auf .s."
exit 0
fi
# Und ein bisschen aufräumen
mv ${1%??} executables/
mv *.o ofiles/

Wenn man das Skript nach /usr/local/bin kopiert, kann man es als Befehl ausführen.

EDIT: Beim Anschauen dieses Skripts dürfte so manch einer Augenkrebs bekommen. Um die Lesbarkeit ein wenig zu erhöhen, habe ich es ein wenig modifiziert. Sonst wirft man mir nachher noch einen schlechten Programmierstil vor.😉

#!/bin/bash

if [ $1=*.s ]                 # Quelldatei muss die Endung .s haben.
then
        FILE=${1%.s}              # Die Endung .s wird gekappt und der Rest in eine Variable gepackt 
        as $FILE.s -o $FILE.o     # Kompilieren   
        ld $FILE.o -o $FILE       # Linken  
else
        echo "Keine Quelldatei angegeben oder Quelldatei endet nicht auf .s."
        exit 0
fi
# Und ein bisschen aufräumen
mv $FILE executables/
mv $FILE.o ofiles/

~ von tofuzius - Juni 23, 2012.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

 
%d Bloggern gefällt das: