class Rubyfuu::Assembly32

Public Instance Methods

+() click to toggle source
# File lib/rubyfuu/assembly32.rb, line 38
def +
  write 'incb (%edi)'
end
-() click to toggle source
# File lib/rubyfuu/assembly32.rb, line 42
def -
  write 'decb (%edi)'
end
<() click to toggle source
# File lib/rubyfuu/assembly32.rb, line 34
def <
  write 'dec %edi'
end
>() click to toggle source
# File lib/rubyfuu/assembly32.rb, line 30
def >
  write 'inc %edi'
end
header() click to toggle source
# File lib/rubyfuu/assembly32.rb, line 3
    def header
      write <<EOF
.lcomm buffer1, 10000

.globl _main
_main:
\tmov $buffer1, %edi
EOF
    end
left_bracket() click to toggle source
# File lib/rubyfuu/assembly32.rb, line 13
def left_bracket
  loop = @loop_counter+=1
  @stack << loop

  write 'cmpb $0, (%edi)'
  write "jz .LE#{loop}"
  write ".LS#{loop}:", false
end
right_bracket() click to toggle source
# File lib/rubyfuu/assembly32.rb, line 22
def right_bracket
  loop = @stack.pop

  write 'cmpb $0, (%edi)'
  write "jnz .LS#{loop}"
  write ".LE#{loop}:", false
end