rubyx/lib/virtual/integer.rb

47 lines
1.1 KiB
Ruby
Raw Normal View History

module Vm
class Integer
def less_or_equal block , right
block.cmp( self , right )
2014-06-26 16:52:15 +02:00
Virtual::BranchCondition.new :le
end
def greater_or_equal block , right
block.cmp( self , right )
2014-06-26 16:52:15 +02:00
Virtual::BranchCondition.new :ge
end
def greater_than block , right
block.cmp( self , right )
2014-06-26 16:52:15 +02:00
Virtual::BranchCondition.new :gt
end
def less_than block , right
block.cmp( self , right )
2014-06-26 16:52:15 +02:00
Virtual::BranchCondition.new :lt
end
def plus block , first , right
block.add( self , left , right )
self
end
def minus block , left , right
block.sub( self , left , right )
self
end
2014-06-14 22:48:12 +02:00
def left_shift block , left , right
block.mov( self , left , shift_lsr: right )
self
end
def equals block , right
block.cmp( self , right )
2014-06-26 16:52:15 +02:00
Virtual::BranchCondition.new :eq
end
2014-06-24 11:24:36 +02:00
def is_true? function
function.cmp( self , 0 )
2014-06-26 16:52:15 +02:00
Virtual::BranchCondition.new :ne
2014-06-24 11:24:36 +02:00
end
def move block , right
block.mov( self , right )
self
end
end
end