OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [net/] [802/] [pseudo/] [compile.awk] - Rev 1765

Compare with Previous | Blame | View Log

# usage: cat pseudocode | sed -f act2num | awk -f compile.awk
#
#
BEGIN { "date" | getline
	today = $0
	printf("\n/* this file generated on %s  */\n", today )
	printf("\nstatic char pseudo_code [ ] = { \n" )
	opl = 0			# op codes on the current line
 
	opc = 0			# opcode counter
	fpi = 0			# fill pointer for idx array
}
 
/^;/ { } 			# line starting with semicolon is comment 
 
/^[A-Z]/ {			# start of a new action 
	emit( 0 )
	idx[ ++fpi ] = opc
	name[ fpi ] = $1 
	emit( $2 )
}
 
/^[\t ]/ { 
        emit( $1 )
}
 
END {		
	if ( opl > 8 ) {
	    printf("\n")
	}
	printf("\t  0\n};\n\n")
	printf("static short int pseudo_code_idx [ ] ={\n")
	opl = 0
	emit( 0 )
	for( ii = 1; ii <= fpi; ii++ )
	   emit( idx[ ii ] )
	if ( opl > 8 ) {
	    printf("\n")
	}
	printf("\t  0\n};\n\n")
 
	printf("#define %-10s \t %3d \n", "NOP", 0 )
	for( ii = 1; ii <= fpi; ii++ )
	    printf("#define %-10s \t %3d \n", name[ ii ], ii )
	printf("\n")
}
 
function emit( opcode ){	# Niclaus Wirth
	if ( opl > 8 ) {
	    printf("\n")
	    opl = 0
	}
	opl = opl +1
	printf("\t%4d,", opcode )
	opc++
}
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.