deepjit: mini optimierungen
[calu.git] / progs / deepjit.s
index 6f1cb91eaf728f195ab969c5d68cec3cb8b68e4f..4fe864bed9e24a1fd71ea5ccf4959a3e088c4185 100644 (file)
@@ -116,6 +116,14 @@ main:
        call+ u_init
        call+ u_recv_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
        ldih r1, inputdata@hi
@@ -153,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
+       pop r1
        call u_send_byte
+       call u_send_newline
+       pop r1
+       call u_send_uint
+       call u_send_newline
 
        br+ main
 
@@ -182,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
@@ -249,7 +272,7 @@ vm_defer:
        addi r10, r10, 8
        cmp r10, r9
        reteq+
-       brnq- vm_defer
+       br+ vm_defer
 
 ;case *
 ;42