new_table 1.0 KB

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