76 lines
1.1 KiB
Plaintext
76 lines
1.1 KiB
Plaintext
|
#!/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
|