rubyx/lib/arm/passes/branch_implementation.rb
Torsten Ruger 50da6a40f2 Move the Main instruction from register to virtual
also needs a branch in register.
This way the register level is self sufficient
(noticed while writing debugger)
2015-07-17 13:21:57 +03:00

18 lines
488 B
Ruby

module Arm
# This implements branch logic, which is simply assembler branch
#
# The only target for a call is a Block, so we just need to get the address for the code
# and branch to it.
#
class BranchImplementation
def run block
block.codes.dup.each do |code|
next unless code.is_a? Register::Branch
br = ArmMachine.b( code.block )
block.replace(code , br )
end
end
end
Virtual.machine.add_pass "Arm::BranchImplementation"
end