class Ronin::ASM::Syntax::Intel

Constants

WIDTHS

Data sizes and their identifiers

Public Class Methods

emit_immediate_operand(op) click to toggle source

Emits an immediate operand.

@param [ImmediateOperand] op

The operand.

@return [String]

The formatted immediate operand.
# File lib/ronin/asm/syntax/intel.rb, line 59
def self.emit_immediate_operand(op)
  "#{WIDTHS[op.width]} #{emit_integer(op.value)}"
end
emit_instruction(ins) click to toggle source

Emits an instruction.

@param [Instruction] ins

The instruction.

@return [String]

The formatted instruction.
# File lib/ronin/asm/syntax/intel.rb, line 106
def self.emit_instruction(ins)
  line = emit_keyword(ins.name)

  unless ins.operands.empty?
    line << "\t" << emit_operands(ins.operands)
  end

  return line
end
emit_memory_operand(op) click to toggle source

Emits a memory operand.

@param [MemoryOperand] op

The operand.

@return [String]

The formatted memory operand.
# File lib/ronin/asm/syntax/intel.rb, line 72
def self.emit_memory_operand(op)
  asm = emit_register(op.base)

  if op.index
    asm << '+' << emit_register(op.index)
    asm << '*' << emit_integer(op.scale) if op.scale > 1
  end

  if op.offset != 0
    sign = if op.offset >= 0 then '+'
           else                   '-'
           end

    asm << sign << emit_integer(op.offset)
  end

  asm = "[#{asm}]"

  unless op.width == op.base.width
    asm = "#{WIDTHS[op.width]} #{asm}"
  end

  return asm
end
emit_prologue(program) click to toggle source

Emits the program’s prologue.

@param [Program] program

The program.

@return [String]

The formatted prologue.

@since 0.2.0

# File lib/ronin/asm/syntax/intel.rb, line 142
def self.emit_prologue(program)
  "BITS #{BITS[program.arch]}"
end
emit_register(reg) click to toggle source

Emits a register.

@param [Register] reg

The register.

@return [String]

The register name.
# File lib/ronin/asm/syntax/intel.rb, line 46
def self.emit_register(reg)
  reg.name.to_s
end
emit_section(name) click to toggle source

Emits a section name.

@param [Symbol] name

The section name.

@return [String]

The formatted section name.

@since 0.2.0

# File lib/ronin/asm/syntax/intel.rb, line 127
def self.emit_section(name)
  "section .#{name}"
end