123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/bin/sh
- em_table=$1
- h=${2-.}
- d=${3-.}
- set `grep fpseu $em_table`
- p=$2
- set `grep fmnem $em_table`
- m=$2
- ed - $em_table <<'A' > X
- 1,/^$/g/ /s// /gp
- A
- ed - $em_table <<'A' | awk '{$2=$2+'$p'; print}' > Y
- 1,/^$/d
- 1,/^$/g/ /s// /gp
- A
- ed - $em_table <<'A' | awk '{print $0,'$m'+i++}' > Z
- 1,/^$/d
- 1,/^$/d
- 1,/^$/g/ /s// /gp
- A
- i=`wc -l <Y`
- echo 'lpseu' `expr $i + $p - 1` >>X
- i=`wc -l <Z`
- echo 'lmnem' `expr $i + $m - 1` >>X
- ed - X <<'A' > $h/em_spec.h
- g/^/s//#define sp_/p
- A
- ed - Y <<'A' > $h/em_pseu.h
- g/ \(.*\) .*/s// \1/
- g/\(.*\) \(.*\)/s//#define ps_\1 \2/p
- A
- ed - Z <<'A' > $h/em_mnem.h
- g/ .* /s// /
- g/\(.*\) \(.*\)/s//#define op_\1 \2/p
- A
- (
- echo 'char em_pseu[][4] = {'
- ed - Y <<'A'
- g/\(...\).*/s// "\1",/p
- A
- echo '};'
- ) > $d/em_pseu.c
- (
- echo 'char em_mnem[][4] = {'
- ed - Z <<'A'
- g/\(...\).*/s// "\1",/p
- A
- echo '};'
- ) > $d/em_mnem.c
- (
- echo '#include <em_flag.h>
- char em_flag[] = {'
- ed - Z <<'A' | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
- g/^... /s///
- g/ .*/s///
- g/\(.\)\(.\)/s//PAR_\1 | FLO_\2/
- g/-/s//NO/g
- g/.*/s// &,/p
- A
- echo '};'
- ) > $d/em_flag.c
- rm X Y Z
|