3 ms·
I think subroutines would go something like: PUSH the_address_you_want_to_come_back_to JMP some_other_spot the_address_you_want_to_come_back_to: BLA
by jws 15y ago
I think subroutines would go something like:
PUSH the_address_you_want_to_come_back_to
JMP some_other_spot
the_address_you_want_to_come_back_to:
BLAH
BLAH
...
some_other_spot:
BLAH
BLAH
POP some_scratch_address
JMP some_scratch_address
So yes, JSR is two opcodes and RTS is also two opcodes, but it works.
- kragen 15y agoIn your first snippet, you seem to be assuming that JMP is direct, and in the second, you seem to be assuming that JMP is indirect. It appears to be direct: https://github.com/GenTiradentes/tinyvm/blob/master/tvm.c#L59 https://github.com/GenTiradentes/tinyvm/blob/master/tvm.c#L5... You could, of course, do it with self-modifying code if that's possible. (I'm not familiar enough with the VM to know if it is.)