new_table 991 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. h=${1-.}
  2. d=${2-.}
  3. set `grep fpseu em_table`
  4. p=$2
  5. set `grep fmnem em_table`
  6. m=$2
  7. ed - em_table <<'A' > X
  8. 1,/^$/g/ /s// /gp
  9. A
  10. ed - em_table <<'A' | awk '{print $1,$2+'$p'}' > Y
  11. 1,/^$/d
  12. 1,/^$/g/ /s// /gp
  13. A
  14. ed - em_table <<'A' | awk '{print $0,'$m'+i++}' > Z
  15. 1,/^$/d
  16. 1,/^$/d
  17. 1,/^$/g/ /s// /gp
  18. A
  19. i=`wc -l <Y`
  20. echo 'lpseu' `expr $i + $p - 1` >>X
  21. i=`wc -l <Z`
  22. echo 'lmnem' `expr $i + $m - 1` >>X
  23. ed - X <<'A' > $h/em_spec.h
  24. g/^/s//#define sp_/p
  25. A
  26. ed - Y <<'A' > $h/em_pseu.h
  27. g/\(.*\) \(.*\)/s//#define ps_\1 \2/p
  28. A
  29. ed - Z <<'A' > $h/em_mnem.h
  30. g/ .* /s// /
  31. g/\(.*\) \(.*\)/s//#define op_\1 \2/p
  32. A
  33. (
  34. echo 'char em_pseu[][4] = {'
  35. ed - Y <<'A'
  36. g/\(...\).*/s// "\1",/p
  37. A
  38. echo '};'
  39. ) > $d/em_pseu.c
  40. (
  41. echo 'char em_mnem[][4] = {'
  42. ed - Z <<'A'
  43. g/\(...\).*/s// "\1",/p
  44. A
  45. echo '};'
  46. ) > $d/em_mnem.c
  47. (
  48. echo '#include <em_flag.h>
  49. char em_flag[] = {'
  50. ed - Z <<'A' | tr a-z A-Z
  51. g/^... /s///
  52. g/ .*/s///
  53. g/\(.\)\(.\)/s//PAR_\1 | FLO_\2/
  54. g/-/s//NO/g
  55. g/.*/s// &,/p
  56. A
  57. echo '};'
  58. ) > $d/em_flag.c
  59. rm X Y Z