summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2020-05-15 20:31:25 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2020-05-15 20:31:25 +0200
commit7410a294233d8ee0128c563f53624109d0bc09d8 (patch)
tree7d1973bd0f1bd86f6f31eab341b15f9321ac3363
parentbc124a174d3c28d57d2293c6abbfe744920f534b (diff)
downloadcompilertests-7410a294233d8ee0128c563f53624109d0bc09d8.tar.gz
compilertests-7410a294233d8ee0128c563f53624109d0bc09d8.tar.bz2
printnig values for dd, not just $0
-rw-r--r--ecomp-c/ec.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/ecomp-c/ec.c b/ecomp-c/ec.c
index d0d761e..ee8d03c 100644
--- a/ecomp-c/ec.c
+++ b/ecomp-c/ec.c
@@ -515,6 +515,24 @@ static void Emit( char *s, ... )
va_end( args );
fflush( stdout );
}
+
+static void Emit_Hexbyte( int d )
+{
+ /* TODO: maybe add %02X to our printf */
+ if( d < 16 ) {
+ Emit( "0%X", d );
+ } else {
+ Emit( "%X", d );
+ }
+}
+
+static void Emit_DD( int d )
+{
+ Emit_Hexbyte( d & 0xFF );
+ Emit_Hexbyte( ( d >> 8 ) & 0xFF );
+ Emit_Hexbyte( ( d >> 16 ) & 0xFF );
+ Emit_Hexbyte( ( d >> 24 ) & 0xFF );
+}
/* parser */
@@ -1356,7 +1374,9 @@ static void epilogue( void )
if( symbol->class == SYMBOL_CLASS_VARIABLE ) {
switch( symbol->type->size ) {
case 4:
- Emit( "%s: dd $00000000\n", symbol->name );
+ Emit( "%s: dd $", symbol->name );
+ Emit_DD( symbol->value );
+ Emit( "\n" );
break;
case 1:
Emit( "%s: db $00\n", symbol->name );