From 75982e6e4839b198b22070fc493b9b1a57440e0f Mon Sep 17 00:00:00 2001 From: Martin Perner Date: Sat, 18 Dec 2010 01:44:31 +0100 Subject: [PATCH] [bench] vm: lut, inputdata, bug fixes jump has still a bug, more bugs not know till know but only tested till the first jump :P --- 8_benchs/src/vm.s | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/8_benchs/src/vm.s b/8_benchs/src/vm.s index c9b7e04..e90902d 100644 --- a/8_benchs/src/vm.s +++ b/8_benchs/src/vm.s @@ -3,26 +3,16 @@ inputdata: ;8 * 8 4 .fill 1, 0x382A3834 -;8 * X 1 -.fill 1, 0x382A5831 ;1 X * 8 .fill 1, 0x31582A38 -;- X D + -.fill 1, 0x2D58442B ;+ D X - .fill 1, 0x2B44582D ;P \xF8 J D .fill 1, 0x50F84A44 -;6 8 * + -.fill 1, 0x36382A2B ;+ * 8 6 .fill 1, 0x2B2A3836 -;D I \020 \000 -.fill 1, 0x44492000 ;\000 \020 I D .fill 1, 0x00204944 -;\000 \000 < ~ -.fill 1, 0x00003C7E ;~ < \000 \000 .fill 1, 0x7E3C0000 ;8 P \005 J @@ -36,10 +26,14 @@ stack: .text main: ldi r1, inputdata + + ldw r0, 0(r2) + call+ vm br+ main vm: + ;r0 ... lut address (can be overwritten) ;r1 ... addr to input ;r2 ... pc ;r3 ... effective stack address @@ -59,8 +53,12 @@ vm_loop: add r4, r1, r2 ;load input ldb r5, 0(r4) + ;we need to multiply input by 4 to get correct address offset + lls r0, r5, 2 + ;calc position in jumptable + ldw r0, jumptable(r0) ;jump to instr - brr r5 + brr r0 vm_eof: ;load stack[sp-1] @@ -252,7 +250,7 @@ vm_not: .data jumptable: ;0 -.fill 0, vm_eof +.fill 1, vm_eof .fill 40, vm_default ;42 .fill 1, vm_mul -- 2.25.1