class Metasm::WebAsm::Memref

Attributes

off[RW]

Public Class Methods

new(off) click to toggle source
# File metasm/cpu/webasm/main.rb, line 22
def initialize(off)
        @off = Expression[off]
end

Public Instance Methods

render() click to toggle source
# File metasm/cpu/webasm/main.rb, line 39
def render
        ['[', @off, ']']
end
symbolic(di=nil) click to toggle source
# File metasm/cpu/webasm/main.rb, line 26
def symbolic(di=nil)
        sz = 8
        off = Expression[:mem, :+, [@off]]
        if di and di.opcode.name =~ /(32|64)\.(load|store)(8|16|32)?/
                opsz, op, mode = $1, $2, $3
                sz = mode ? mode.to_i/8 : opsz.to_i/8
                stack_off = (op == 'store' ? [:opstack, :+, 8] : [:opstack])
                off = Expression[Indirection[stack_off, 4], :+, off]
        end
        Indirection[off, sz, (di.address if di)]
end