[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [gulliver] Paramètres pour un fichier assembleur


From plaunay1 <pierre dot launay at ac-rennes dot fr>
Subject Re: [gulliver] Paramètres pour un fichier assembleur
Date Sun, 26 Aug 2007 14:18:26 +0200

Gilles LAMIRAL a écrit :
Bonjour,

Le preprocesseur m4 et le shell sont tes amis.
Dans un quart d'heure tu en pinces pour m4 et le shell.

=== Partie m4 ===

5) Création de compiler.sh pour pouvoir faire compiler.sh moniteur.asm bd=19200 zzzz=dodo ...

Je change l'interface, ce sera plutôt

sh compiler moniteur BAUD_RATE=19200 TRUC_MACHIN=42 ...

Copier-coller les lignes suivantes en ligne de commande du
cat au LIK. (ou bien créer un fichier de la ligne "#!/bin/sh" à
la ligne "as $file.asm")

cat > compiler <<'LIK'
#!/bin/sh

#set -x # enlever le premier # pour passer en mode debug shell
file=$1
shift
test -n "$file" || { echo "usage: $0 fichier"; exit 1; }
test -f "$file" || { echo "Pas glop $file n'existe pas"; exit 1; }
# recup des paramètres avec ajout de -D pour chacun
for arg in "$@"; do
PARAMS="$PARAMS -D $arg"
done
# m4 au boulot eval "m4 -P $PARAMS $file > $file.asm"
# assemblage
as $file.asm


LIK


Essayer avec


sh compiler f02.m4 BAUD_RATE=19200 YOYO=42

Il y a as qui n'est pas content mais l'essentiel est là.


Merci beaucoup pour ton aide
Comme j'avais besoin de #define j'ai modifié ainsi le fichier compiler

#!/bin/sh

#set -x   # enlever le premier # pour passer en mode debug shell
file=$1
shift
test -n "$file" || { echo "usage: $0 fichier"; exit 1; }
test -f "$file" || { echo "Pas glop $file n'existe pas"; exit 1; }
# recup des paramètres avec ajout de -D pour chacun
for arg in "$@"; do
  PARAMS="$PARAMS -D $arg"
done
# m4 au boulot
fichier=${file%.*} #ne prend que la partie avant le point
eval "m4 -P $PARAMS $file |sed -e 's/definir/#define/' > $fichier.inc"
# assemblage
gpasm monitor.asm

mon fichier f02.m4
m4_define(`BAUD_RATE',m4_ifdef(`BAUD_RATE',BAUD_RATE,`9600'))m4_dnl
definir BD BAUD_RATE
m4_define(`FOSC',m4_ifdef(`FOSC',FOSC,`4000000'))m4_dnl
definir Freq FOSC

j'ai mis #include <f02.inc> dans mon fichier monitor.asm

le compilateur est gpasm pour pic

J'ai testé et c'est OK
Je vais amélioré le fichier f02.m4 et comme je l'enverrai à Jack je pense l'appeler user.inc, il suffira de mettre au début
#include <user.inc> dans son fichier monitor.asm


Un grand Mersi Gilles
Per