MightyPirates / TIS-3D

TIS-100 inspired low-tech computing in Minecraft.
https://www.curseforge.com/minecraft/mc-mods/tis-3d
Other
109 stars 35 forks source link

add JAB instruction & MOV labels support #196

Closed UQuark closed 5 months ago

UQuark commented 8 months ago

This commit adds two changes:

These two changes allow for simpler function implementations, see an example function that multiplies input arg by two:

Before this commit:

#DEFINE KEYPAD DOWN
#DEFINE STACK UP

BEGIN:
MOV KEYPAD ACC

SAV
MOV PC ACC
ADD 5
MOV ACC STACK
SWP
MOV ACC STACK
JMP MUL2

MOV STACK ACC

JMP BEGIN

MUL2:
MOV STACK ACC
MUL 2
SAV
MOV STACK ACC
SWP
MOV ACC STACK
SWP
SUB PC
JRO ACC

After:

#DEFINE KEYPAD DOWN
#DEFINE STACK UP

BEGIN:
MOV KEYPAD STACK
MOV MUL2_RET STACK
JMP MUL2

MUL2_RET:
MOV STACK ACC
JMP BEGIN

MUL2:
MOV STACK ACC
SAV
MOV STACK ACC
MUL 2
MOV ACC STACK
SWP
JAB ACC
fnuecke commented 5 months ago

Thanks!