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

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


From Gilles LAMIRAL <gilles dot lamiral at laposte dot net>
Subject Re: [gulliver] Paramètres pour un fichier assembleur
Date Sun, 26 Aug 2007 00:46:47 +0200

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 ===

Voici 4 exemples progressifs.

1) Tu crée un fichier f01.m4 avec le contenu suivant :

Le taux vaut BAUD_RATE

Une façon de créer ce fichier (à copier-coller dans un
terminal):

  echo 'Le taux vaut BAUD_RATE' > f01.m4

tu invoques m4 sur ce fichier :

  m4 -P f01.m4

Tu obtiens en sortie le contenu du fichier, sans changement:

  m4 -P f01.m4
Le taux vaut BAUD_RATE

Rien de transcendant pour l'instant.

1b) Tu invoques m4 de nouveau avec un paramètre
supplémentaire:

  m4 -P -D BAUD_RATE=19200  f01.m4

Tu obtiens en sortie le contenu du fichier, et un peu de
magie:

  m4 -P -D BAUD_RATE=19200  f01.m4
Le taux vaut 19200

La déjà tu as le sourire. Passons à la valeur par défaut.

2) Tu crée un fichier f02.m4 avec le contenu suivant :

m4_define(`BAUD_RATE',m4_ifdef(`BAUD_RATE',BAUD_RATE,`9600'))m4_dnl
Le taux vaut BAUD_RATE
lalala

Voici une façon de créer ce fichier (à copier-coller dans un
terminal du cat au dernier PROUT + Entrée) :

   cat > f02.m4 <<'PROUT'
m4_define(`BAUD_RATE',m4_ifdef(`BAUD_RATE',BAUD_RATE,`9600'))m4_dnl
Le taux vaut BAUD_RATE
lalala
PROUT

tu invoques m4 sur ce fichier :

  m4 -P f02.m4

Tu obtiens en sortie le contenu du fichier, et de la magie
en plus :

  m4 -P f02.m4
Le taux vaut 9600
lalala

2b) Tu invoques m4 de nouveau avec un paramètre
supplémentaire:

  m4 -P -D BAUD_RATE=19200  f02.m4

  Tu obtiens en sortie le contenu du fichier, et encore un
peu de magie :

  m4 -P -D BAUD_RATE=19200  f02.m4
Le taux vaut 19200
lalala

Ton besoin est rempli.

4) Création du fichier à assembler : une simple redirection suffit.

m4 -P -D BAUD_RATE=19200  f02.m4 > f02.asm
as f02.asm


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à.


-- 
Au revoir,                                02 99 64 31 77
                                          06 20 79 76 06
Gilles Lamiral. France, Chavagne (35310)  09 52 27 33 66