deepjit/deepjit_reg: bugfixes
[calu.git] / progs / deepjit.s
index 871879aed2da7e32eaa8a5c86586a324a33808ed..0ee92ceee9a4abea1880828b01ec1f81e28f4238 100644 (file)
@@ -85,8 +85,8 @@ prog_jmp:
 .fill 1, 0xeb000003;br+ CONST
 
 prog_imm:
-.fill 1, 0xed400000;ldil r6, CONST
-.fill 1, 0xed400002;ldih r6, CONST
+.fill 1, 0xed300000;ldil r6, CONST
+.fill 1, 0xed300002;ldih r6, CONST
 .ifill push r6
 
 prog_pop:
@@ -116,8 +116,13 @@ main:
        call+ u_init
        call+ u_recv_byte
 
-       ldis r1, 0x48
-       call+ u_send_byte
+       ; benchprolog
+       call t_init
+       call t_stop
+       ldis r1, 0
+       call t_valset
+       call t_start
+       ; /benchprolog
 
        ;set address of input
        ldis r1, inputdata@lo
@@ -156,10 +161,25 @@ main:
        ;call jit'ed prog
        call+ prog_start
 
+       ; benchepilog
+       push r0
+       call+ t_init
+       call+ t_stop
+       call+ t_valget
+       subi r0, r0, 0xd ; offset abziehen
+       pop r3
+       push r0
+       push r3
+       ; /benchepilog
+
+       ;send result
        call+ u_init
-
-       mov r1, r0
-       call+ u_send_byte
+       pop r1
+       call u_send_byte
+       call u_send_newline
+       pop r1
+       call u_send_uint
+       call u_send_newline
 
        br+ main
 
@@ -185,13 +205,13 @@ jit:
        ;backup defer table address
        mov r10, r9
        ;decrement address to input by 1
-       subi r1, r1, 1
+       br+ vm_loop_1
 
 vm_default:    
 vm_loop:
        ;increment input address
        addi r1, r1, 1
-
+vm_loop_1:
        ;store address of next instruction in table
        stw r2, 0(r3)
        ;increment instr. table
@@ -252,7 +272,7 @@ vm_defer:
        addi r10, r10, 8
        cmp r10, r9
        reteq+
-       brnq- vm_defer
+       br+ vm_defer
 
 ;case *
 ;42
@@ -620,7 +640,6 @@ vm_not:
 
        br+ vm_loop
 
-prog_start:
 
 .data
 jumptable: