new_table 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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 '{$2=$2+'$p'; print}' > 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// \1/
  28. g/\(.*\) \(.*\)/s//#define ps_\1 \2/p
  29. A
  30. ed - Z <<'A' > $h/em_mnem.h
  31. g/ .* /s// /
  32. g/\(.*\) \(.*\)/s//#define op_\1 \2/p
  33. A
  34. (
  35. echo 'char em_pseu[][4] = {'
  36. ed - Y <<'A'
  37. g/\(...\).*/s// "\1",/p
  38. A
  39. echo '};'
  40. ) > $d/em_pseu.c
  41. (
  42. echo 'char em_mnem[][4] = {'
  43. ed - Z <<'A'
  44. g/\(...\).*/s// "\1",/p
  45. A
  46. echo '};'
  47. ) > $d/em_mnem.c
  48. (
  49. echo '#include <em_flag.h>
  50. char em_flag[] = {'
  51. ed - Z <<'A' | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
  52. g/^... /s///
  53. g/ .*/s///
  54. g/\(.\)\(.\)/s//PAR_\1 | FLO_\2/
  55. g/-/s//NO/g
  56. g/.*/s// &,/p
  57. A
  58. echo '};'
  59. ) > $d/em_flag.c
  60. rm X Y Z