#!/bin/sh set -e ed=$1 em_table=$2 h=${3-.} d=${4-.} 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 $ed - $em_table <<'A' | awk '{print $0,'$m'+i++}' i=`wc -l >X i=`wc -l >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 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