asmm68k.sh
上传用户:shenzhenrh
上传日期:2013-05-12
资源大小:2904k
文件大小:1k
源码类别:

信息检索与抽取

开发平台:

Unix_Linux

  1. #!/bin/sh
  2. # Translate the assembler syntax of m68k assembler programs
  3. # Usage: asmm68k < sunos-asm-file > portable-asm-file
  4. # The portable-asm-file has to be
  5. #   1. preprocessed,
  6. #   2. grep -v '^ *#line' | grep -v '^#'
  7. #   3. sed -e 's,% ,%,g' -e 's,//.*$,,'
  8. tmpscript1=sed$$tmp1
  9. tmpscript2=sed$$tmp2
  10. tmpremove='rm -f $tmpscript1 $tmpscript2'
  11. trap "$tmpremove" 1 2 15
  12. cat > $tmpscript1 << EOF
  13. # ----------- Remove #APP/#NO_APP lines
  14. /^#APP$/d
  15. /^#NO_APP$/d
  16. # ----------- Remove gcc self-identification
  17. /gcc2_compiled/d
  18. /gnu_compiled_c/d
  19. EOF
  20. cat > $tmpscript2 << EOF
  21. # ----------- Prefix register names with $, to be turned into % later
  22. s/,/, /g
  23. s/([^A-Za-z0-9_])([ad][0-7]|sp|fp[0-7])([^A-Za-z0-9_])/1$23/g
  24. s/([^A-Za-z0-9_])([ad][0-7]|sp|fp[0-7])$/1$2/g
  25. s/, /,/g
  26. # ----------- Declare global symbols as functions (we have no variables)
  27. s/.globl _([A-Za-z0-9_]*)$/.globl _1
  28. DECLARE_FUNCTION(1)/
  29. # ----------- Global symbols depends on ASM_UNDERSCORE
  30. s/_([A-Za-z0-9_:]*)/C(1)/
  31. EOF
  32. sed -f $tmpscript1 | 
  33. sed -f $tmpscript2
  34. eval "$tmpremove"