5 if [ "$1" == "" ]; then
6 echo "Verwendung: $0 <abgabe>"
11 TESTMAIN="$CURDIR/testmain.c"
12 DUMPINSTR="$CURDIR/dumpinstr.sh"
13 TRACEDIR="$CURDIR/traces"
14 RESULT="$TRACEDIR/result.txt"
15 CALLCONV="$CURDIR/callingconvention.o"
20 if [ ! -d $ABG ]; then
21 echo "Abgabeverzeichnis $ABG nicht gefunden!"
24 if [ ! -d $TEST ]; then
25 echo "Testverzeichnis $TEST nicht gefunden!"
33 if [ ! -d $TRACEDIR ]; then
34 echo "creating $TRACEDIR"
42 for i in $TEST/*.0; do
46 # generate .s file and ignore output on stderr
47 ./$1 < $i > $TMPNAME.s 2> /dev/null
49 gcc -DCALL=\"${i%.0}.call\" -o $TMPNAME $TMPNAME.s $TESTMAIN $CALLCONV
52 # extract the exported symbols from the .s file
53 #LABEL=`grep '.globl' $TMPNAME.s | sed 's/^.*\\.globl *\\([a-zA-Z0-9_]\\+\\).*$/\1/g'`
55 # this won't work, we need all actual labels
56 LABEL=`grep '[a-zA-Z0-9_.$]\\+:' $TMPNAME.s | sed 's/^\\(.*[^a-zA-Z0-9_.$]\\)\\?\\([a-zA-Z0-9_.$]\\+\\):.*$/\2/g'`
61 MATCHES="$MATCHES\\|$j"
63 $DUMPINSTR $TMPNAME $j > /dev/null
65 echo "$bi FEHLGESCHLAGEN"
71 grep "<\\($MATCHES\\)\\(+[0-9]*\\)\\?>:" $TMPNAME.trace > $TRACEDIR/$bi.trace
73 ni=`cat $TRACEDIR/$bi.trace | wc -l`
74 if [ -f $TEST/${bi}.instr ]; then
75 ti=`cat $TEST/$bi.instr`
77 echo "err: fuer den testfall \"$bi\" existiert noch keine referenzdatei"
80 echo "$bi: $ni (referenz: $ti)"
81 echo "$bi $ni" >> $RESULT
87 rm -f $TMPNAME $TMPNAME.s $TMPNAME.trace
93 echo " $gni Instruktionen"
94 echo " $gti Referenzinstruktionen"