compile from mom compiler to risc

This commit is contained in:
2019-08-10 12:42:47 +03:00
parent 5994cd3276
commit d5f89a4979
8 changed files with 51 additions and 45 deletions

View File

@ -33,9 +33,9 @@ module Mom
end
# generate the risc label lazily
def risc_label(comiler)
def risc_label(compiler)
@risc_label ||= Risc.label(self,name)
comiler.add_constant(@risc_label.address)
compiler.add_constant(@risc_label.address)
@risc_label
end

View File

@ -27,6 +27,21 @@ module Mom
@callable
end
# drop down to risc
def to_risc
risc_comp = Risc::MethodCompiler.new(@callable , mom_instructions)
instruction = mom_instructions.next
while( instruction )
raise "whats this a #{instruction}" unless instruction.is_a?(Mom::Instruction)
#puts "adding mom #{instruction.to_s}:#{instruction.next.to_s}"
instruction.to_risc( risc_comp )
risc_comp.reset_regs
#puts "adding risc #{risc.to_s}:#{risc.next.to_s}"
instruction = instruction.next
end
risc_comp
end
# helper method for builtin mainly
# the class_name is a symbol, which is resolved to the instance_type of that class
#

View File

@ -45,19 +45,6 @@ module Mom
Risc::RiscCollection.new(riscs)
end
# convert the given mom instruction to_risc and then add it (see add_code)
# continue down the instruction chain unti depleted
# (adding moves the insertion point so the whole mom chain is added as a risc chain)
def add_mom( instruction )
while( instruction )
raise "whats this a #{instruction}" unless instruction.is_a?(Mom::Instruction)
#puts "adding mom #{instruction.to_s}:#{instruction.next.to_s}"
instruction.to_risc( self )
reset_regs
#puts "adding risc #{risc.to_s}:#{risc.next.to_s}"
instruction = instruction.next
end
end
end
end