class Vm::Instructions::MemoryAccessInstruction
Attributes
index[R]
object_name[R]
operation[R]
segment[R]
Public Class Methods
new(instruction, object_name)
click to toggle source
# File lib/hackasm/vm/instructions/memory_access_instruction.rb, line 11 def initialize(instruction, object_name) @segment = instruction[:segment].to_s @operation = instruction[:operation].to_s @index = instruction[:index].to_s @object_name = object_name end
Public Instance Methods
comment()
click to toggle source
# File lib/hackasm/vm/instructions/memory_access_instruction.rb, line 31 def comment "// #{operation} #{segment} #{index}\n" end
to_asm()
click to toggle source
# File lib/hackasm/vm/instructions/memory_access_instruction.rb, line 18 def to_asm comment + case segment when *MemoryAccessOperations::ConstantOperation.segments MemoryAccessOperations::ConstantOperation.new(index).to_asm when *MemoryAccessOperations::StaticOperation.segments MemoryAccessOperations::StaticOperation.new(index, object_name).to_asm when *MemoryAccessOperations::VirtualSegmentOperation.segments MemoryAccessOperations::VirtualSegmentOperation.new(operation, segment, index).to_asm when *MemoryAccessOperations::FixedSegmentOperation.segments MemoryAccessOperations::FixedSegmentOperation.new(operation, segment, index).to_asm end.split("\n").map(&:strip).join("\n") end