diff options
-rw-r--r-- | lib/base.h | 3 | ||||
-rw-r--r-- | vm/runtime.c | 12 |
2 files changed, 6 insertions, 9 deletions
@@ -48,8 +48,11 @@ typedef i64 s_word; typedef union { byte as_byte; + s_byte as_char; hword as_hword; + s_hword as_int; word as_word; + s_word as_long; } data_t; typedef enum diff --git a/vm/runtime.c b/vm/runtime.c index a7d356d..a2e78b7 100644 --- a/vm/runtime.c +++ b/vm/runtime.c @@ -188,27 +188,21 @@ err_t vm_execute(vm_t *vm) switch (print_type) { case TYPE_CHAR: { - char c = 0; - memcpy(&c, &datum.as_byte, 1); - printf("%c", c); + printf("%c", datum.as_char); break; } case TYPE_BYTE: printf("0x%x", datum.as_byte); break; case TYPE_INT: { - s_hword i = 0; - memcpy(&i, &datum.as_hword, HWORD_SIZE); - printf("%" PRId32, i); + printf("%" PRId32, datum.as_int); break; } case TYPE_HWORD: printf("%" PRIu32, datum.as_hword); break; case TYPE_LONG: { - s_word i = 0; - memcpy(&i, &datum.as_word, WORD_SIZE); - printf("%" PRId64, i); + printf("%" PRId64, datum.as_long); break; } case TYPE_WORD: |