fix interpreter

by currently not checking for old register pattern
feels like wip, but passes (all but one)
This commit is contained in:
2020-03-22 14:31:43 +02:00
parent f2250bc206
commit c16ed5ab3a
4 changed files with 22 additions and 14 deletions
+1
View File
@@ -66,6 +66,7 @@ module Arm
end
def translate_FunctionReturn( code )
# FIXME reduce the int first, register contains a ReturnAddress
ArmMachine.mov( :pc , code.register)
end
def translate_DynamicJump(code)
+1 -1
View File
@@ -61,7 +61,7 @@ module Parfait
# But the integer (address) needs to be adjusted by load address.
class ReturnAddress < Integer
def to_s
def to_s(ignored = nil)
"ReturnAddress 0x" + object_id.to_s(16) + ":" + value.to_s
end
end
+2 -2
View File
@@ -70,7 +70,7 @@ module Risc
def get_register( reg )
reg = reg.symbol if reg.is_a? Risc::RegisterValue
raise "Not a register #{reg}" unless Risc::RegisterValue.look_like_reg(reg)
#raise "Not a register #{reg}" unless Risc::RegisterValue.look_like_reg(reg)
@registers[reg]
end
@@ -236,7 +236,7 @@ module Risc
def execute_FunctionReturn
link = get_register( @instruction.register )
log.debug "Return to #{link.to_s(16)}"
set_pc link
set_pc link.value
false
end