Annotation of sys/arch/m68k/fpsp/asm2gas, Revision 1.1.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