class RubyVM::YJIT::Disasm - RDoc Documentation

# class RubyVM::YJIT::Disasm

### Public Instance Methods

disasm(p1, p2) click to toggle source

    static VALUE
    yjit_disasm(VALUE self, VALUE code, VALUE from)
    {
        size_t count;
        csh * handle;
        cs_insn *insns;

        TypedData_Get_Struct(self, csh, &yjit_disasm_type, handle);
        count = cs_disasm(*handle, (uint8_t*)StringValuePtr(code), RSTRING_LEN(code), NUM2ULL(from), 0, &insns);
        VALUE insn_list = rb_ary_new_capa(count);

        for (size_t i = 0; i < count; i++) {
            VALUE vals = rb_ary_new_from_args(3, LONG2NUM(insns[i].address),
                    rb_str_new2(insns[i].mnemonic),
                    rb_str_new2(insns[i].op_str));
            rb_ary_push(insn_list, rb_struct_alloc(cYjitDisasmInsn, vals));
        }
        cs_free(insns, count);
        return insn_list;
    }