NetBSD/sys/arch/m68k/060sp/asm2gas

189 lines
6.2 KiB
Plaintext
Raw Normal View History

#!/bin/sh
#
# Copyright (c) 1994 Charles Hannum. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
# must display the following acknowledgement:
# This product includes software developed by Charles Hannum.
# 4. The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# $Id: asm2gas,v 1.1 1994/07/05 17:57:04 mycroft Exp $
#
# This ugly script converts assembler code from Motorola's format to a
# form that gas (MIT syntax) can digest.
cat $1 | sed -e '
/[ ]IDNT[ ]/{s/^/|/;p;d;}
/^\*/{p;d;}
s/;/|/
/[ ]equ[ ]/{
s/\([A-Za-z_][A-Za-z0-9_]*\)[ ]*equ[ ]*/\1,/
s/[ ][ ]*\(.*\)$/ |\1/
s/ ||/ |/
s/^/ .set /
p;d
}
s/^\([A-Za-z_][A-Za-z0-9_]*\)[ ][ ]*/\1: /
s/^\([A-Za-z_][A-Za-z0-9_]*\)$/\1:/
/^[A-Za-z_][A-Za-z0-9_]*:/{
h
s/:.*$/:/
p
g
s/^.*:[ ]*/ /
/^ $/d
}
/^[ ][ ]*[.a-zA-Z][.a-zA-Z0-9]*/{
h
s/[ ]*[.a-zA-Z][.a-zA-Z0-9]*[ ]*//
s/[ ][ ]*\(.*\)$/ |\1/
s/ ||/ |/
x
s/^[ ]*\([.a-zA-Z][.a-zA-Z0-9]*\)/\1/
s/[ ][ ]*.*$/ /
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
s/^/ /
G
s/\n//
}
' | sed -e '
s/^\*/|/
s/\$/0x/g
s/#:/#0x/g
s/ dc\.l/ .long/
s/ dc\.w/ .short/
s/ dc\.b/ .byte/
' | sed -e '
s/\([^_a-zA-Z0-9]\)A\([0-7]\)\([^_a-zA-Z0-9:.]\)/\1a\2\3/g
s/\([^_a-zA-Z0-9]\)A\([0-7]\)\([^_a-zA-Z0-9:.]\)/\1a\2\3/g
s/\([^_a-zA-Z0-9]\)A\([0-7]\)$/\1a\2/g
s/\([^_a-zA-Z0-9]\)D\([0-7]\)\([^_a-zA-Z0-9]\)/\1d\2\3/g
s/\([^_a-zA-Z0-9]\)D\([0-7]\)\([^_a-zA-Z0-9]\)/\1d\2\3/g
s/\([^_a-zA-Z0-9]\)D\([0-7]\)$/\1d\2/g
s/\([^_a-zA-Z0-9]\)FP\([0-7]\)\([^_a-zA-Z0-9]\)/\1fp\2\3/g
s/\([^_a-zA-Z0-9]\)FP\([0-7]\)\([^_a-zA-Z0-9]\)/\1fp\2\3/g
s/\([^_a-zA-Z0-9]\)FP\([0-7]\)$/\1fp\2/g
s/\([^_a-zA-Z0-9]\)FPCR\([^_a-zA-Z0-9]\)/\1fpcr\2/g
s/\([^_a-zA-Z0-9]\)FPCR\([^_a-zA-Z0-9]\)/\1fpcr\2/g
s/\([^_a-zA-Z0-9]\)FPCR$/\1fpcr/g
s/\([^_a-zA-Z0-9]\)FPSR\([^_a-zA-Z0-9]\)/\1fpsr\2/g
s/\([^_a-zA-Z0-9]\)FPSR\([^_a-zA-Z0-9]\)/\1fpsr\2/g
s/\([^_a-zA-Z0-9]\)FPSR$/\1fpsr/g
s/\([^_a-zA-Z0-9]\)FPIAR\([^_a-zA-Z0-9]\)/\1fpi\2/g
s/\([^_a-zA-Z0-9]\)FPIAR\([^_a-zA-Z0-9]\)/\1fpi\2/g
s/\([^_a-zA-Z0-9]\)FPIAR$/\1fpi/g
s/\([^_a-zA-Z0-9]\)fpiar\([^_a-zA-Z0-9]\)/\1fpi\2/g
s/\([^_a-zA-Z0-9]\)fpiar\([^_a-zA-Z0-9]\)/\1fpi\2/g
s/\([^_a-zA-Z0-9]\)fpiar$/\1fpi/g
s/\([^_a-zA-Z0-9]\)a7\([^_a-zA-Z0-9:.]\)/\1sp\2/g
s/\([^_a-zA-Z0-9]\)a7\([^_a-zA-Z0-9:.]\)/\1sp\2/g
s/\([^_a-zA-Z0-9]\)a7$/\1sp/g
' | sed -e '
s/-(\(a.\))/\1@-/g
s/(\(a.\))+/\1@+/g
s/\([-+A-Za-z0-9_]*\)(\(a.\))/\2@(\1)/g
s/\([-+A-Za-z0-9_]*\)(\(a.\),\([ad].[^)]*\))/\2@(\1,\3)/g
s/-(sp)/sp@-/g
s/(sp)+/sp@+/g
s/\([-+A-Za-z0-9_]*\)(sp)/sp@(\1)/g
s/\([-+A-Za-z0-9_]*\)(sp,\([ad].[^)]*\))/sp@(\1,\2)/g
s/-(pc)/pc@-/g
s/(pc)+/pc@+/g
s/\([-+A-Za-z0-9_]*\)(pc)/pc@(\1)/g
s/\([-+A-Za-z0-9_]*\)(pc,\([ad].[^)]*\))/pc@(\1,\2)/g
s/\.\([bBwWlL])\)/:\1/g
s/\.\([bBwWlL]\)\*\([0-9][0-9]*)\)/:\1:\2/g
s/\*\([0-9][0-9]*\))/:l:\1)/g
s/{\([0-9][0-9]*\):\([0-9][0-9]*\)}/{#\1:#\2}/g
s/{\(d[0-7]\):\([0-9][0-9]*\)}/{\1:#\2}/g
s/@()/@/g;s/@(0)/@/g
s/(,/(/g;s/:)/)/g
s/^ section 7/ .text/
s/^ section 8/ .text/
s/^ section 15/ .data/
/^ include/{s/include[ ]/.include "/;s/\.h[ ]*$/.defs"/;p;d;}
s/^ xref/| xref/
s/^ end/| end/
s/^ xdef/ .global/
s/^ lea\.l / lea /
s/^ swap\.w / swap /
s/^ adda\.l / addal /
s/^ suba\.l / subal /
s/^ movea\.l / moveal /
s/^ btst\.[bl] / btst /
s/^ bclr\.[bl] / bclr /
s/^ bset\.[bl] / bset /
s/^ bchg\.[bl] / bchg /
s/^ clr\.\([lbw]\) / clr\1 /
s/^ tst\.\([lbw]\) / tst\1 /
s/^ neg\.\([lbw]\) / neg\1 /
s/^ or\(i*\)\.\([lbw]\) / or\1\2 /
s/^ eor\(i*\)\.\([lbw]\) / eor\1\2 /
s/^ and\(i*\)\.\([lbw]\) / and\1\2 /
s/^ mul\([su]\)\.\([lw]\) / mul\1\2 /
s/^ div\([sul]*\)\.\([lw]\) / div\1\2 /
s/^ cmp\([i2]*\)\.\([lbw]\) / cmp\1\2 /
s/^ ro\([xlr]*\)\.\([lbw]\) / ro\1\2 /
s/^ \([al]\)s\([lr]\)\.\([lbw]\) / \1s\2\3 /
s/^ add\([xiq]*\)\.\([lbw]\) / add\1\2 /
s/^ sub\([xiq]*\)\.\([lbw]\) / sub\1\2 /
s/^ move\([scmq]*\)\.\([lbw]\) / move\1\2 /
s/^ fabs\.\([sdx]\) / fabs\1 /
s/^ fneg\.\([sdx]\) / fneg\1 /
s/^ ftst\.\([sdx]\) / ftst\1 /
s/^ fmul\.\([sdx]\) / fmul\1 /
s/^ fdiv\.\([sdx]\) / fdiv\1 /
s/^ fsqrt\.\([sdx]\) / fsqrt\1 /
s/^ fadd\.\([sdxbwl]\) / fadd\1 /
s/^ fsub\.\([sdxbwl]\) / fsub\1 /
s/^ fcmp\.\([sdxbwl]\) / fcmp\1 /
s/^ fmove\([mx]*\)\.\([sdxbwl]\) / fmove\1\2 /
# fix an odd instruction
s/^ bhs\.w / bcc /
# set and branch instructions; questionable
s/^ s\([a-z][a-z]*\)\.b / s\1 /
s/^ db\([a-z][a-z]*\)\.w / db\1 /
s/^ b\([a-eg-z][a-z]*\)\.b / b\1s /
s/^ b\([a-eg-z][a-z]*\)\.w / b\1 /
s/^ b\([a-eg-z][a-z]*\)\.l / b\1l /
s/^ fb\([a-eg-z][a-z]*\)\.w / fb\1 /
s/^ fb\([a-eg-z][a-z]*\)\.l / fb\1l /
# make up for a gas bug
/^ fmovemx /{
s/ fp\([0-7]\),/ fp\1-fp\1,/
s/,fp\([0-7]\) /,fp\1-fp\1 /
s/,fp\([0-7]\)$/,fp\1-fp\1/
}
'