Torsten
db5a59f735
Was getting confused myself, where it was instruction or instructions, when if the base class was inside or out of dir. Now dirs are plural, and base class is inside.
26 lines
957 B
Ruby
26 lines
957 B
Ruby
module SlotMachine
|
|
|
|
# A base class for conditions in SlotMachine
|
|
# Checks (if in code, compare in assm) jump or not, depending
|
|
# The logic we choose is closer to the code logic (the asm is reversed)
|
|
# When we write an if, the true is the next code, so the Check logic is
|
|
# that if the check passes, no jump happens
|
|
# This means you need to pass the false label, where to jump to if the
|
|
# check does not pass
|
|
# Note: In assembler a branch on 0 does just that, it branches if the condition
|
|
# is met. This means that the asm implementation is somewhat the reverse
|
|
# of the SlotMachine names. But it's easier to understand (imho)
|
|
class Check < Instruction
|
|
attr_reader :false_label
|
|
|
|
def initialize(false_label)
|
|
set_label(false_label)
|
|
end
|
|
|
|
def set_label(false_label)
|
|
@false_label = false_label
|
|
raise "Jump target must be a label #{false_label}" unless false_label.is_a?(Label) end
|
|
end
|
|
|
|
end
|