[BACK]Return to asm2gas CVS log [TXT][DIR] Up to [local] / sys / arch / m68k / fpsp

Annotation of sys/arch/m68k/fpsp/asm2gas, Revision 1.1

1.1     ! nbrk        1: #!/bin/sh
        !             2: #      $OpenBSD: asm2gas,v 1.2 1996/05/29 21:05:24 niklas Exp $
        !             3: #      $NetBSD: asm2gas,v 1.3 1994/10/26 07:48:49 cgd Exp $
        !             4:
        !             5: #
        !             6: # Copyright (c) 1994 Charles Hannum.  All rights reserved.
        !             7: #
        !             8: # Redistribution and use in source and binary forms, with or without
        !             9: # modification, are permitted provided that the following conditions
        !            10: # are met:
        !            11: # 1. Redistributions of source code must retain the above copyright
        !            12: #    notice, this list of conditions and the following disclaimer.
        !            13: # 2. Redistributions in binary form must reproduce the above copyright
        !            14: #    notice, this list of conditions and the following disclaimer in the
        !            15: #    documentation and/or other materials provided with the distribution.
        !            16: # 3. All advertising materials mentioning features or use of this software
        !            17: #    must display the following acknowledgement:
        !            18: #      This product includes software developed by Charles Hannum.
        !            19: # 4. The name of the author may not be used to endorse or promote products
        !            20: #    derived from this software without specific prior written permission.
        !            21: #
        !            22: # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            23: # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            24: # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            25: # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            26: # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            27: # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            28: # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        !            29: # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        !            30: # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
        !            31: # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            32: #
        !            33:
        !            34: # This ugly script converts assembler code from Motorola's format to a
        !            35: # form that gas (MIT syntax) can digest.
        !            36:
        !            37: cat $1 | sed -e '
        !            38:   # format canonicalization
        !            39:
        !            40:   /[   ]IDNT[  ]/{s/^/|/;p;d;}
        !            41:   /^\*/{s//|/;p;d;}
        !            42:   s/;/|/
        !            43:   /[   ]equ[   ]/{
        !            44:     s/\([A-Za-z_][A-Za-z0-9_]*\)[      ]*equ[  ]*/\1,/
        !            45:     s/[        ][      ]*\(.*\)$/              |\1/
        !            46:     s/         ||/             |/
        !            47:     s/^/       .set    /
        !            48:     p;d
        !            49:   }
        !            50:   s/^\([A-Za-z_][A-Za-z0-9_]*\)[       ][      ]*/\1:  /
        !            51:   s/^\([A-Za-z_][A-Za-z0-9_]*\)$/\1:/
        !            52:   /^[A-Za-z_][A-Za-z0-9_]*:/{
        !            53:     h
        !            54:     s/:.*$/:/
        !            55:     p
        !            56:     g
        !            57:     s/^.*:[    ]*/     /
        !            58:     /^ $/d
        !            59:   }
        !            60:   /^[  ][      ]*\([.a-zA-Z][.a-zA-Z0-9]*\)/{
        !            61:     h
        !            62:     s///
        !            63:     s/^[       ][      ]*//
        !            64:     s/[        ][      ]*\(.*\)$/              |\1/
        !            65:     s/         ||/             |/
        !            66:     x
        !            67:     s/^[       ][      ]*//
        !            68:     s/[        ][      ]*.*$/  /
        !            69:     y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
        !            70:     s/^/       /
        !            71:     G
        !            72:     s/\n//
        !            73:   }
        !            74: ' | sed -e '
        !            75:   # operator conversion
        !            76:
        !            77:   s/^  section 7/      .text/
        !            78:   s/^  section 8/      .text/
        !            79:   s/^  section 15/     .data/
        !            80:   /^   include/{s/include[     ]/.include "/;s/\.h[    ]*$/.defs"/;p;d;}
        !            81:   s/^  xref/|  xref/
        !            82:   s/^  end/|   end/
        !            83:   s/^  xdef/   .global/
        !            84:
        !            85:   s/^  dc\.l/  .long/
        !            86:   s/^  dc\.w/  .short/
        !            87:   s/^  dc\.b/  .byte/
        !            88:
        !            89:   /^   [aceg-z]/{
        !            90:     /^ add[aiqx]*\.[bwl]       /{s/\.//;p;d;}
        !            91:     /^ andi*\.[bwl]    /{s/\.//;p;d;}
        !            92:     /^ as[lr]\.[bwl]   /{s/\.//;p;d;}
        !            93:     /^ clr\.[bwl]      /{s/\.//;p;d;}
        !            94:     /^ cmp[i2]*\.[bwl] /{s/\.//;p;d;}
        !            95:     /^ eori*\.[bwl]    /{s/\.//;p;d;}
        !            96:     /^ lea\.l  /{s/\..//;p;d;}
        !            97:     /^ ls[lr]\.[bwl]   /{s/\.//;p;d;}
        !            98:     /^ move[acmqs]*\.[bwl]     /{s/\.//;p;d;}
        !            99:     /^ mul[su]\.[wl]   /{s/\.//;p;d;}
        !           100:     /^ neg\.[bwl]      /{s/\.//;p;d;}
        !           101:     /^ ori*\.[bwl]     /{s/\.//;p;d;}
        !           102:     /^ ro[lrx]*\.[bwl] /{s/\.//;p;d;}
        !           103:     /^ sub[aiqx]*\.[bwl]       /{s/\.//;p;d;}
        !           104:     /^ swap\.w /{s/\..//;p;d;}
        !           105:     /^ s\([a-tv-z][a-z]*\)\.b  /{s/\..//;p;d;}
        !           106:     /^ tst\.[bwl]      /{s/\.//;p;d;}
        !           107:     p;d
        !           108:   }
        !           109:
        !           110:   /^   bchg\.[bl]      /{s/\..//;p;d;}
        !           111:   /^   bclr\.[bl]      /{s/\..//;p;d;}
        !           112:   /^   bset\.[bl]      /{s/\..//;p;d;}
        !           113:   /^   btst\.[bl]      /{s/\..//;p;d;}
        !           114:   /^   div[sul]*\.[wl] /{s/\.//;p;d;}
        !           115:   /^   fabs\.[sdx]     /{s/\.//;p;d;}
        !           116:   /^   fadd\.[sdxbwl]  /{s/\.//;p;d;}
        !           117:   /^   fcmp\.[sdxbwl]  /{s/\.//;p;d;}
        !           118:   /^   fdiv\.[sdx]     /{s/\.//;p;d;}
        !           119:   /^   fmove[mx]*\.[sdxbwl]    /{s/\.//;p;d;}
        !           120:   /^   fmul\.[sdx]     /{s/\.//;p;d;}
        !           121:   /^   fneg\.[sdx]     /{s/\.//;p;d;}
        !           122:   /^   fsqrt\.[sdx]    /{s/\.//;p;d;}
        !           123:   /^   fsub\.[sdxbwl]  /{s/\.//;p;d;}
        !           124:   /^   ftst\.[sdx]     /{s/\.//;p;d;}
        !           125:
        !           126:   /^   b[a-eg-z][a-z]*\.b      /{s/\.b/s/;p;d;}
        !           127:   /^   b[a-eg-z][a-z]*\.w      /{s/\.w//;p;d;}
        !           128:   /^   b[a-eg-z][a-z]*\.l      /{s/\.l/l/;p;d;}
        !           129:   /^   db[a-z][a-z]*\.w        /{s/\.w//;p;d;}
        !           130:   /^   fb[a-eg-z][a-z]*\.w     /{s/\.w//;p;d;}
        !           131:   /^   fb[a-eg-z][a-z]*\.l     /{s/\.l/l/;p;d;}
        !           132: ' | sed -e '
        !           133:   # operand conversion
        !           134:
        !           135:   s/\([^_a-zA-Z0-9]\)FPIAR\([^_a-zA-Z0-9]\)/\1FPI\2/g
        !           136:   s/\([^_a-zA-Z0-9]\)FPIAR\([^_a-zA-Z0-9]\)/\1FPI\2/g
        !           137:   s/\([^_a-zA-Z0-9]\)FPIAR$/\1FPI/g
        !           138:   s/\([^_a-zA-Z0-9]\)fpiar\([^_a-zA-Z0-9]\)/\1fpi\2/g
        !           139:   s/\([^_a-zA-Z0-9]\)fpiar\([^_a-zA-Z0-9]\)/\1fpi\2/g
        !           140:   s/\([^_a-zA-Z0-9]\)fpiar$/\1fpi/g
        !           141:
        !           142:   s/\$/0x/g
        !           143:   s/#:/#:0x/g
        !           144:
        !           145:   s/-(\([sSpPaA][pPcC0-7]\))/\1@-/g
        !           146:   s/(\([sSpPaA][pPcC0-7]\))+/\1@+/g
        !           147:   s/\([-+A-Za-z0-9_]*\)(\([sSpPaA][pPcC0-7]\)\([),]\)/\2@(\1\3/g
        !           148:
        !           149:   s/\.\([bBwWlL])\)/:\1/g
        !           150:   s/\.\([bBwWlL]\)\*\([0-9][0-9]*)\)/:\1:\2/g
        !           151:   s/\*\([0-9][0-9]*\))/:l:\1)/g
        !           152:   s/{\([0-9][0-9]*\):\([0-9][0-9]*\)}/{#\1:#\2}/g
        !           153:   s/{\([dD][0-7]\):\([0-9][0-9]*\)}/{\1:#\2}/g
        !           154:
        !           155:   s/@(0*)/@/g
        !           156:   s/(,/(/g;s/:)/)/g
        !           157:
        !           158:   # make up for a gas bug
        !           159:   /^   fmovemx /{
        !           160:        s/      \([fF][pP][0-7]\),/     \1-\1,/
        !           161:        s/,\([fF][pP][0-7]\)    /,\1-\1 /
        !           162:        s/,\([fF][pP][0-7]\)$/,\1-\1/
        !           163:   }
        !           164: '

CVSweb