From eea04e3327972f052dcfb8ae0854b77f87d3d52f Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Fri, 18 Sep 2020 14:49:07 -0400 Subject: - Added support for structs, and unions to the emulator's assembler. - Make the symbol table a doublely linked list, in both ways. - Optimized the memcopy() function. - Changed the benchmark timing, to now use a timer, and stops once the timer reaches zero. When the timer hits zero, it sends SIGALRM to the main function, which tells the emulator that the benchmark is done. --- test/popcnt2.s | 4 ++-- test/struct.s | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 test/struct.s (limited to 'test') diff --git a/test/popcnt2.s b/test/popcnt2.s index 3aa38f0..503b074 100644 --- a/test/popcnt2.s +++ b/test/popcnt2.s @@ -14,7 +14,7 @@ popcnt: bra @loop ; Keep looping. @end: tya ; Return the bit count. - rts.w ; End of popcnt. + rts ; End of popcnt. reset: @@ -27,7 +27,7 @@ reset: tay ; Reset Y. main: pha.q ; Save A. - jsr.w popcnt ; Get population count. + jsr popcnt ; Get population count. tay ; Save it in Y. pla.q ; Get A back. inc ; Increment A by one. diff --git a/test/struct.s b/test/struct.s new file mode 100644 index 0000000..dce527d --- /dev/null +++ b/test/struct.s @@ -0,0 +1,31 @@ +.struct lol + oof .byte + cia .word + glo .dword + nig .qword + .union asd + f .qword + ss .byte + .struct aa + lol .qword + why .word + .endstruct + .endunion + why .word +.endstruct + + +.org 0 + +lda #1 +ldb #lol.asd.f +ldx #lol.asd.ss +ldy #lol.glo +lda #lol.oof +ldb #lol.asd.aa.lol +ldx #lol.asd.aa.why +ldy #lol.why +a +l a +v +q -- cgit v1.2.3-13-gbd6f