我必须找出我在内存中的一条指令的大小(实际上,我在内存中有一个小代码段并且想要获得第一条指令的大小)。我花了一些时间才找到 libopcodes 和 libbfd。我红了标题并试图提出一个简单的解决方案,但似乎我误解了一些东西,因为程序总是崩溃:
int main(int argc, char **argv) {
disassemble_info *dis = malloc(sizeof(*dis));
assert(dis != NULL);
dis->arch = bfd_arch_i386;
dis->read_memory_func = buffer_read_memory;
dis->buffer_length = 64;
dis->buffer = malloc(dis->buffer_length);
memset(dis->buffer, 0x90, dis->buffer_length);
disassemble_init_for_target(dis);
int instr_size = print_insn_i386(0, dis);
printf("instruction size is %d\n", instr_size);
return 0;
}
预期的结果是指令大小为 1 ( nop
)。
编辑:
对不起各位,我是个笨人。
memset(dis, 0, sizeof(*dis));