rubyx/lib/mom/instruction/instruction.rb

44 lines
1.4 KiB
Ruby
Raw Normal View History

module Mom
# Base class for MOM instructions
2018-03-19 16:49:46 +01:00
# At the base class level instructions are a linked list.
#
# Mom::Instructions are created by the Vool level as an intermediate step
# towards the next level down, the Risc level.
# Mom and Risc are both abstract machines (ie have instructions), so both
# share the linked list functionality (In Util::List)
2018-03-19 16:49:46 +01:00
#
# To convert a Mom instruction to it's Risc equivalent to_risc is called
#
class Instruction
include Util::List
2018-03-19 16:49:46 +01:00
# to_risc, like the name says, converts the instruction to it's Risc equivalent.
# The Risc machine is basically a simple register machine (kind of arm).
# In other words Mom is the higher abstraction and so mom instructions convert
# to many (1-10) risc instructions
#
# The argument that is passed is a MethodCompiler, which has the method and some
2018-03-19 16:49:46 +01:00
# state about registers used. (also provides helpers to generate risc instructions)
def to_risc(compiler)
raise self.class.name + "_todo"
end
2017-08-30 16:21:13 +02:00
end
2018-03-19 16:49:46 +01:00
end
2018-03-19 16:49:46 +01:00
require_relative "label"
require_relative "check"
2018-03-13 08:00:51 +01:00
require_relative "basic_values"
require_relative "simple_call"
2017-09-14 15:07:02 +02:00
require_relative "dynamic_call"
require_relative "block_yield"
require_relative "resolve_method"
2017-08-30 16:21:13 +02:00
require_relative "truth_check"
2017-09-14 15:07:02 +02:00
require_relative "not_same_check"
2017-08-30 16:21:13 +02:00
require_relative "jump"
require_relative "slot_load"
require_relative "return_sequence"
require_relative "message_setup"
require_relative "argument_transfer"