Extracting the mom instruction from builtin modules
Since they were embedded at first (easier copy/paste) they now got own files, like their brethren also mini tests for each instruction , nice start
This commit is contained in:
28
lib/mom/builtin/operator.rb
Normal file
28
lib/mom/builtin/operator.rb
Normal file
@@ -0,0 +1,28 @@
|
||||
module Mom
|
||||
module Builtin
|
||||
class Operator < ::Mom::Instruction
|
||||
attr_reader :operator
|
||||
def initialize(name , operator)
|
||||
super(name)
|
||||
@operator = operator
|
||||
end
|
||||
|
||||
def to_risc(compiler)
|
||||
builder = compiler.builder(compiler.source)
|
||||
integer_tmp = builder.allocate_int
|
||||
operator = @operator # make accessible in block
|
||||
builder.build do
|
||||
integer! << message[:receiver]
|
||||
integer.reduce_int
|
||||
integer_reg! << message[:arguments]
|
||||
integer_reg << integer_reg[Parfait::NamedList.type_length + 0] #"other" is at index 0
|
||||
integer_reg.reduce_int
|
||||
integer.op operator , integer_reg
|
||||
integer_tmp[Parfait::Integer.integer_index] << integer
|
||||
message[:return_value] << integer_tmp
|
||||
end
|
||||
return compiler
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user