228 {
229 int archflags = flags & DIS_ARCH_MASK;
230
231 if (archflags == DIS_X86_SIZE16 || archflags == DIS_X86_SIZE32 ||
232 archflags == DIS_X86_SIZE64)
233 return (1);
234
235 return (0);
236 }
237
238 static int
239 dis_i386_instrlen(dis_handle_t *dhp, uint64_t pc)
240 {
241 if (dis_disassemble(dhp, pc, NULL, 0) != 0)
242 return (-1);
243
244 return (dhp->dh_addr - pc);
245 }
246
247 dis_arch_t dis_arch_i386 = {
248 dis_i386_supports_flags,
249 dis_i386_handle_attach,
250 dis_i386_handle_detach,
251 dis_i386_disassemble,
252 dis_i386_previnstr,
253 dis_i386_min_instrlen,
254 dis_i386_max_instrlen,
255 dis_i386_instrlen,
256 };
|
228 {
229 int archflags = flags & DIS_ARCH_MASK;
230
231 if (archflags == DIS_X86_SIZE16 || archflags == DIS_X86_SIZE32 ||
232 archflags == DIS_X86_SIZE64)
233 return (1);
234
235 return (0);
236 }
237
238 static int
239 dis_i386_instrlen(dis_handle_t *dhp, uint64_t pc)
240 {
241 if (dis_disassemble(dhp, pc, NULL, 0) != 0)
242 return (-1);
243
244 return (dhp->dh_addr - pc);
245 }
246
247 dis_arch_t dis_arch_i386 = {
248 .da_supports_flags = dis_i386_supports_flags,
249 .da_handle_attach = dis_i386_handle_attach,
250 .da_handle_detach = dis_i386_handle_detach,
251 .da_disassemble = dis_i386_disassemble,
252 .da_previnstr = dis_i386_previnstr,
253 .da_min_instrlen = dis_i386_min_instrlen,
254 .da_max_instrlen = dis_i386_max_instrlen,
255 .da_instrlen = dis_i386_instrlen,
256 };
|