# # ASMTOC.PL # # Takes a file that is an actual listing from the cross assembler and # makes a C file with a structure containing all the machine code from # the assembly file. # # Copyright (c) 2002, Jason Riffel - TotalEmbedded LLC. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 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. # # Neither the name of TotalEmbedded nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "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 # COPYRIGHT OWNER OR CONTRIBUTORS 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. # $filename = $ARGV[0]; # Print out the C header file print "//\n"; print "// $filename.c\n"; print "//\n"; print "// DO NOT EDIT THIS FILE. This file was generated automatically\n"; print "// by a script that converts an assembler listing into a C structure\n"; print "// containing the hex values of the instructions in the listing.\n"; print "// You must edit the assembler source directly and execute the build\n"; print "// again.\n"; print "//\n\n"; print "unsigned int aui_$filename\_code\[\] = {\n"; while() { $line = $_; $line =~ s/\t/ /g; $line =~ s/^..........//; if ($line =~ m/^[0-9A-Fa-f]{8,8}/) { print " 0x"; print $&; print ", // "; $line = $'; $line =~ s/^ +//; print $line; } else { $line =~ s/^ +//; print " // $line"; } } print " 0x00000000}; // <- Inserted by script to terminate array.\n\n"; close(FH);