sedf 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. # $Header$
  2. /movab/ {
  3. s/movab 1(\(.*\)),\1$/incl \1/
  4. s/movab -1(\(.*\)),\1$/decl \1/
  5. s/movab \([0-9]*\)(\(.*\)),\2$/addl2 $\1,\2/
  6. s/movab -\([0-9]*\)(\(.*\)),\2$/subl2 $\1,\2/
  7. s/movab 0(\(.*\)) \[\(.*\)\],\1$/addl2 \2,\1/
  8. s/movab 0(\(.*\)) \[\(.*\)\],\2$/addl2 \1,\2/
  9. }
  10. /$0/ {
  11. s/movz[bw]\([wl]\) $0,/clr\1 /
  12. s/mov\([bwl]\) $0,/clr\1 /
  13. s/cvt[bw]\([wl]\) $0,/clr\1 /
  14. }
  15. /add/ {
  16. s/\(add[fdlw]\)3 \(.*\),\(.*\),\3$/\12 \2,\3/
  17. s/\(add[fdlw]\)3 \(.*\),\(.*\),\2$/\12 \3,\2/
  18. s/add\([wl]\)2 \$-\([0-9]*\),/sub\12 $\2,/
  19. s/add\([wl]\)3 \$-\([0-9]*\),/sub\13 $\2,/
  20. s/add\([wl]\)3 \(.*\),\$-\([0-9]*\),/sub\13 $\3,\2,/
  21. }
  22. /mul/ {
  23. s/\(mul[fdlw]\)3 \(.*\),\(.*\),\3$/\12 \2,\3/
  24. s/\(mul[fdlw]\)3 \(.*\),\(.*\),\2$/\12 \3,\2/
  25. }
  26. /sub/ {
  27. s/\(sub[fdlw]\)3 \(.*\),\(.*\),\3$/\12 \2,\3/
  28. s/sub\([wl]\)2 \$-\([0-9]*\),/add\12 $\2,/
  29. s/sub\([wl]\)3 \$-\([0-9]*\),/add\13 $\2,/
  30. }
  31. /div/s/\(div[fdlw]\)3 \(.*\),\(.*\),\3$/\12 \2,\3/
  32. /bi/s/\(bi[cs][lw]\)3 \(.*\),\(.*\),\3$/\12 \2,\3/
  33. /bis/s/\(bis[lw]\)3 \(.*\),\(.*\),\2$/\12 \3,\2/
  34. /xor/ {
  35. s/\(xor[lw]\)3 \(.*\),\(.*\),\3$/\12 \2,\3/
  36. s/\(xor[lw]\)3 \(.*\),\(.*\),\2$/\12 \3,\2/
  37. }
  38. /$1/ {
  39. s/add\([wl]\)2 \$1,/inc\1 /
  40. s/sub\([wl]\)2 \$1,/dec\1 /
  41. }
  42. /$-1/ {
  43. s/add\([wl]\)2 \$-1,/dec\1 /
  44. s/sub\([wl]\)2 \$-1,/inc\1 /
  45. }
  46. /cmp[bwl].*$0/ {
  47. N
  48. s/cmp\([bwl]\) \(.*\),$0$/tst\1 \2/
  49. s/cmp\([bwl]\) $0,\(.*\)\njneq/tst\1 \2\
  50. jneq/
  51. s/cmp\([bwl]\) $0,\(.*\)\njeql/tst\1 \2\
  52. jeql/
  53. s/cmp\([bwl]\) $0,\(.*\)\njgtr/tst\1 \2\
  54. jlss/
  55. s/cmp\([bwl]\) $0,\(.*\)\njlss/tst\1 \2\
  56. jgtr/
  57. s/cmp\([bwl]\) $0,\(.*\)\njgeq/tst\1 \2\
  58. jleq/
  59. s/cmp\([bwl]\) $0,\(.*\)\njleq/tst\1 \2\
  60. jgeq/
  61. P
  62. D
  63. }
  64. /(sp)+/ {
  65. N
  66. s/movl (sp)+,\(.*\)\npushl \1$/movl (sp),\1/
  67. s/tst[wl] (sp)+\nmovl fp,sp$/movl fp,sp/
  68. s/tst\([wl]\) (sp)+\nmov\1 \(.*\),-(sp)/mov\1 \2,(sp)/
  69. s/tst\([wl]\) (sp)+\nclr\1 -(sp)/clr\1 (sp)/
  70. s/tst\([wl]\) (sp)+\nmovzb\1 \(.*\),-(sp)/movzb\1 \2,(sp)/
  71. s/tst\([wl]\) (sp)+\ncvtb\1 \(.*\),-(sp)/cvtb\1 \2,(sp)/
  72. s/tst\([wl]\) (sp)+\ntst\1 \(.*\)$/mov\1 \2,(sp)+/
  73. s/tstl (sp)+\npushl \(.*\)$/movl \1,(sp)/
  74. s/tstl (sp)+\npusha\([bwlq]\) \(.*\)$/mova\1 \2,(sp)/
  75. P
  76. D
  77. }
  78. /^addl2 .*,sp/ {
  79. N
  80. s/addl2 .*,sp\nmovl fp,sp$/movl fp,sp/
  81. s/^addl2 $6,sp\nmovw \(.*\),-(sp)/tstl (sp)+\
  82. movw \1,(sp)/
  83. s/^addl2 $6,sp\nclrw -(sp)/tstl (sp)+\
  84. clrw (sp)/
  85. s/^addl2 $8,sp\nmovq \(.*\),-(sp)/movq \1,(sp)/
  86. P
  87. D
  88. }
  89. /clrw -(sp)/ {
  90. N
  91. s/clrw -(sp)\nmovw \($[0-9]*\),-(sp)/pushl \1/
  92. s/clrw -(sp)\nmnegw $\([0-9]*\),-(sp)/movzwl $-\1,-(sp)/
  93. s/clrw -(sp)\nmovw \(.*\),-(sp)/movzwl \1,-(sp)/
  94. s/clrw -(sp)\ncvtbw \(\$[0-9]*\),-(sp)/pushl \1/
  95. s/clrw -(sp)\ncvtbw \(\$.*\),-(sp)/movzwl \1,-(sp)/
  96. P
  97. D
  98. }
  99. /mov/ {
  100. N
  101. s/mov\([wl]\) \(.*\),\(.*\)\ntst\1 \3$/mov\1 \2,\3/
  102. P
  103. D
  104. }