Hacker News new | ask | show | jobs
by jws 5461 days 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.
1 comments

In 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#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.)