From: ian Date: Tue, 20 Dec 2005 19:27:24 +0000 (+0000) Subject: to-insn-aliases wip; before redo from aliases X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=7a3d88c98f06d6a8cddac3313143d0293321f6b5;p=trains.git to-insn-aliases wip; before redo from aliases --- diff --git a/iwjpictest/to-insn-aliases b/iwjpictest/to-insn-aliases new file mode 100755 index 0000000..1ed00fb --- /dev/null +++ b/iwjpictest/to-insn-aliases @@ -0,0 +1,44 @@ +#!/usr/bin/perl -p +chomp; +$comment= s/\;.*// ? $& : ''; +if (m/^(\w*\s+)(\w+)(\s+)(.*?)(\s*)$/) { + ($lhs,$opcode,$midspc,$args,$rhs) = ($1,$2,$3,$4,$5); + if ($opcode =~ m/^(b(c|s|tg)f|btfs[sc])$/ && + $args =~ m/\,.*\,/ && + $args =~ s/\,\s*0$/ ' 'x length($&) /e) { + $opcode =~ s/f/_f/; + $opcode =~ s/ss$/_if0/; + $opcode =~ s/sc$/_if1/; + } elsif ($opcode =~ m/^(mul)wf$/ && + $args =~ m/\,/ && + $args =~ s/\,\s*0$/ ' 'x length($&) /e) { + $opcode= 'mul_wf'; + } elsif ($opcode =~ m/^((and|add|xor|ior)wf|addwfc|subwfb)$/ && + $args =~ m/\,.*\,/ && + $args =~ s/\,\s*([01])$/ ' 'x length($&) /e) { + $opcode =~ s/wf/ $1 ? 'wff' : 'wfw' /e; + } elsif ($opcode =~ m/^(com|dec|inc|neg|r[lr]n?c|neg|swap)f$/ && + $args =~ m/\,.*\,/ && + $args =~ s/\,\s*([01])$/ ' 'x length($&) /e) { + $opcode =~ s/f/ $1 ? 'f' : 'fw' /e; + } elsif ($opcode =~ m/^(and|add|xor|ior|mul|mov)lw$/) { + $opcode =~ s/lw$/_lw/; + } elsif ($opcode =~ m/^b(n?(?:c|n|ov|z))$/) { + $opcode =~ s/^b/bra_/; + } elsif ($opcode =~ m/^movff$/) { + $opcode =~ s/ff/_ff/; + } elsif ($opcode =~ m/^macro$/) { + $macro= $lhs; + $macro =~ s/\s.*//; + $macro{$macro}= 1; + } elsif ($opcode =~ m/^(res|equ|include|udata|udata_acs)$/ || + $opcode =~ m/^(ifn?def)$/ || + $opcode =~ m/^(r?call|bra|goto)$/ || + $opcode =~ m/_/) { + } elsif ($macro{$opcode}) { + } else { + warn "unknown $opcode $args"; + } + $_= $lhs.$opcode.$midspc.$args.$rhs; +} +$_.= $comment."\n";