diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2020-05-15 20:31:25 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2020-05-15 20:31:25 +0200 |
commit | 7410a294233d8ee0128c563f53624109d0bc09d8 (patch) | |
tree | 7d1973bd0f1bd86f6f31eab341b15f9321ac3363 | |
parent | bc124a174d3c28d57d2293c6abbfe744920f534b (diff) | |
download | compilertests-7410a294233d8ee0128c563f53624109d0bc09d8.tar.gz compilertests-7410a294233d8ee0128c563f53624109d0bc09d8.tar.bz2 |
printnig values for dd, not just $0
-rw-r--r-- | ecomp-c/ec.c | 22 |
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 ); |