Sha256: 698f19675cca4f87e2db8393799d57f2c50cd9c77257e65ab87348eec49113a9

Contents?: true

Size: 947 Bytes

Versions: 2

Compression:

Stored size: 947 Bytes

Contents

#    This file is part of Metasm, the Ruby assembly manipulation suite
#    Copyright (C) 2006-2009 Yoann GUILLOT
#
#    Licence is LGPL, see LICENCE in the top-level directory


require 'metasm/main'

module Metasm
class BPF < CPU
	class Reg
		attr_accessor :v
		def initialize(v)
			@v = v
		end

		def symbolic(di=nil) ; @v ; end
	end

	class Memref
		attr_accessor :base, :offset, :msz

		def memtype
			:mem
		end

		def initialize(base, offset, msz)
			@base = base
			@offset = offset
			@msz = msz
		end

		def symbolic(di=nil)
			p = Expression[memtype]
			p = Expression[p, :+, @base.symbolic] if base
			p = Expression[p, :+, @offset] if offset
			Indirection[p, @msz, (di.address if di)]
		end
	end

	class Pktref < Memref
		def memtype
			:pkt
		end
	end

	def initialize(family = :latest)
		super()
		@endianness = :big
		@size = 32
		@family = family
	end

	def init_opcode_list
		send("init_#@family")
		@opcode_list
	end
end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
metasm-1.0.5 metasm/cpu/bpf/main.rb
metasm-1.0.4 metasm/cpu/bpf/main.rb