.fill 42, 0
prog_eof:
+.ifill pop r7
.ifill mov r0, r6
.ifill ret+
prog_sub:
.ifill pop r7
-.ifill sub r6, r7, r6;0xe0bbb000
+.ifill sub r7, r7, r6;0xe0bbb000
+.ifill mov r6, r7
prog_lessthan:
.ifill pop r7
.ifill cmp r7, r6;0xec3b0000
-.ifill movlt r6, r14
+.ifill movdlt r6, r14
.ifill movge r6, r15
prog_dup:
prog_imm:
.ifill push r6
-.fill 1, 0xed400000;ldil r6, CONST
-.fill 1, 0xed400002;ldih r6, CONST
+.fill 1, 0xed300000;ldil r6, CONST
+.fill 1, 0xed300002;ldih r6, CONST
prog_pop:
.ifill pop r6
;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
stw r0, PDATA(r13)
ldw r0, 4(r4)
stw r0, PDATA(r13)
+ ldw r0, 8(r4)
+ stw r0, PDATA(r13)
;end of program
;now it is time to clear up the defer table
addi r10, r10, 8
cmp r10, r9
reteq+
- brnq- vm_defer
+ br+ vm_defer
;case *
;42
PROGINSTR
ldw r0, 4(r4)
PROGINSTR
+ ldw r0, 8(r4)
+ PROGINSTR
;increment address
- addi r2, r2, 2
+ addi r2, r2, 3
br+ vm_loop
ldil r4, prog_imm@lo
ldih r4, prog_imm@hi
- ldw r0, 4(r4)
+ ldw r0, 0(r4)
PROGINSTR
;save r6 to r7