Class: SeccompTools::Instruction::LD

Inherits:
Base
  • Object
show all
Defined in:
lib/seccomp-tools/instruction/ld.rb

Overview

Instruction ld.

Direct Known Subclasses

LDX, ST

Constant Summary

Constants included from Const::BPF

Const::BPF::ACTION, Const::BPF::COMMAND, Const::BPF::JMP, Const::BPF::MISCOP, Const::BPF::MODE, Const::BPF::OP, Const::BPF::PR_SET_SECCOMP, Const::BPF::SECCOMP_MODE_FILTER, Const::BPF::SECCOMP_RET_ACTION_FULL, Const::BPF::SECCOMP_RET_DATA, Const::BPF::SECCOMP_SET_MODE_FILTER, Const::BPF::SIZEOF_SECCOMP_DATA, Const::BPF::SRC

Instance Method Summary collapse

Methods inherited from Base

#initialize, #invalid

Constructor Details

This class inherits a constructor from SeccompTools::Instruction::Base

Instance Method Details

#branch(context) ⇒ Array<(Integer, Context)>

Parameters:

  • context (Context)

    Current context.

Returns:

  • (Array<(Integer, Context)>)


37
38
39
40
41
# File 'lib/seccomp-tools/instruction/ld.rb', line 37

def branch(context)
  ctx = context.dup
  ctx.load(reg, **load_val)
  [[line + 1, ctx]]
end

#decompileObject

Decompile instruction.



12
13
14
15
16
17
18
19
# File 'lib/seccomp-tools/instruction/ld.rb', line 12

def decompile
  ret = "#{reg} = "
  _, _reg, type = symbolize
  return ret + type[:val].to_s if type[:rel] == :immi
  return ret + "mem[#{type[:val]}]" if type[:rel] == :mem

  ret + seccomp_data_str
end

#reg'A'

Accumulator register.

Returns:

  • ('A')


29
30
31
# File 'lib/seccomp-tools/instruction/ld.rb', line 29

def reg
  'A'
end

#symbolizevoid

This method returns an undefined value.



22
23
24
25
# File 'lib/seccomp-tools/instruction/ld.rb', line 22

def symbolize
  type = load_val
  [:ld, reg.downcase.to_sym, type]
end