Class: AsmJIT::X86::Mem

Inherits:
Operand show all
Defined in:
ext/asmjit/asmjit.cc

Class Method Summary collapse

Class Method Details

.new(regv, offsetv, sizev) ⇒ Object



175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# File 'ext/asmjit/asmjit.cc', line 175

static VALUE x86_ptr(VALUE _self, VALUE regv, VALUE offsetv, VALUE sizev) {
    OperandWrapper *wrapper = static_cast<OperandWrapper *>(xmalloc(sizeof(OperandWrapper)));

    x86::Reg reg = x86_reg_get(regv);
    if (!reg.isGp()) {
        rb_raise(rb_eAsmJITError, "reg must be Gp");
    }
    int32_t offset = NUM2INT(offsetv);
    uint32_t size = NUM2UINT(sizev);
    x86::Mem mem = x86::ptr(reg.as<x86::Gp>(), offset, size);
    wrapper->opnd = mem;

    VALUE obj = TypedData_Wrap_Struct(cX86Mem, &operand_type, wrapper);
    return obj;
}