fix all uses of operators now they are ssa
This commit is contained in:
@ -186,9 +186,11 @@ module Risc
|
||||
|
||||
# create operator instruction for self and add
|
||||
# doesn't read quite as smoothly as one would like, but better than the compiler version
|
||||
def op( operator , right)
|
||||
# result, the third paraameter, may be nil, in which case a register will be generated
|
||||
# (off coourse using the third parameter makes it look even worse TBC)
|
||||
def op( operator , right , result = nil)
|
||||
right = right.to_reg() if(right.is_a?(RegisterSlot))
|
||||
ret = Risc.op( "operator #{operator}" , operator , self , right)
|
||||
ret = Risc.op( "operator #{operator}" , operator , self , right , result)
|
||||
compiler.add_code(ret) if compiler
|
||||
ret
|
||||
end
|
||||
|
@ -14,47 +14,47 @@ module SlotMachine
|
||||
|
||||
load_object( 1 , integer_const)
|
||||
|
||||
integer_1.op :>> , integer_const
|
||||
integer_1.op :>> , integer_const , integer_1
|
||||
|
||||
integer_const << 2
|
||||
integer_reg.op :>> , integer_const
|
||||
integer_reg.op :+ , integer_1
|
||||
integer_reg.op :>> , integer_const, integer_reg
|
||||
integer_reg.op :+ , integer_1, integer_reg
|
||||
|
||||
integer_const << 4
|
||||
integer_1 << integer_reg
|
||||
integer_reg.op :>> , integer_1
|
||||
integer_reg.op :>> , integer_1, integer_reg
|
||||
|
||||
integer_reg.op :+ , integer_1
|
||||
integer_reg.op :+ , integer_1, integer_reg
|
||||
|
||||
integer_const << 8
|
||||
integer_1 << integer_reg
|
||||
integer_1.op :>> , integer_const
|
||||
integer_1.op :>> , integer_const, integer_1
|
||||
|
||||
integer_reg.op :+ , integer_1
|
||||
integer_reg.op :+ , integer_1, integer_reg
|
||||
|
||||
integer_const << 16
|
||||
integer_1 << integer_reg
|
||||
integer_1.op :>> , integer_const
|
||||
integer_1.op :>> , integer_const, integer_1
|
||||
|
||||
integer_reg.op :+ , integer_1
|
||||
integer_reg.op :+ , integer_1, integer_reg
|
||||
|
||||
integer_const << 3
|
||||
integer_reg.op :>> , integer_const
|
||||
integer_reg.op :>> , integer_const, integer_reg
|
||||
|
||||
integer_const << 10
|
||||
integer_1 << integer_reg
|
||||
integer_1.op :* , integer_const
|
||||
integer_1.op :* , integer_const, integer_1
|
||||
|
||||
integer_self.op :- , integer_1
|
||||
integer_self.op :- , integer_1, integer_self
|
||||
integer_1 << integer_self
|
||||
|
||||
integer_const << 6
|
||||
integer_1.op :+ , integer_const
|
||||
integer_1.op :+ , integer_const, integer_1
|
||||
|
||||
integer_const << 4
|
||||
integer_1.op :>> , integer_const
|
||||
integer_1.op :>> , integer_const, integer_1
|
||||
|
||||
integer_reg.op :+ , integer_1
|
||||
integer_reg.op :+ , integer_1, integer_reg
|
||||
|
||||
integer_tmp[Parfait::Integer.integer_index] << integer_reg
|
||||
message[:return_value] << integer_tmp
|
||||
|
@ -8,8 +8,8 @@ module SlotMachine
|
||||
builder.build do
|
||||
integer_self = message[:receiver].reduce_int(false)
|
||||
load_object( 2 , integer_1)
|
||||
integer_self.op :>> , integer_1
|
||||
integer_tmp[Parfait::Integer.integer_index] << integer_self
|
||||
result = integer_self.op :>> , integer_1
|
||||
integer_tmp[Parfait::Integer.integer_index] << result.result
|
||||
message[:return_value] << integer_tmp
|
||||
end
|
||||
return compiler
|
||||
|
Reference in New Issue
Block a user