introduce return_sequence instruction to mom

This commit is contained in:
Torsten Ruger
2017-04-14 21:01:50 +03:00
parent 68944a0168
commit 265b25d5f4
4 changed files with 35 additions and 4 deletions

View File

@ -7,3 +7,4 @@ module Mom
end
require_relative "slot_load"
require_relative "return_sequence"

View File

@ -0,0 +1,24 @@
module Mom
# The ReturnSequence models the return from a method.
#
# This involves the jump to the return address stored in the message, and
# the reinstantiation of the previous message.
#
# The machine (mom) only ever "knows" one message, the current message.
# Messages are a double linked list, calling involves going forward,
# returning means going back.
#
# The return value of the current message is transferred into the return value of the
# callers return value during the swap of messages, and just before the jump.
#
# The callers perspective of a call is the magical apperance of a return_value
# in it's message at the instruction after the call.
#
# The instruction is not parameterized as it translates to a constant
# set of lower level instructions.
#
class ReturnSequence < Instruction
end
end