Lines Matching refs:ins

65 static int call__scnprintf(struct ins *ins, char *bf, size_t size,
67 static int jump__scnprintf(struct ins *ins, char *bf, size_t size,
72 struct ins *instructions;
101 struct ins *new_instructions;
108 new_instructions = realloc(arch->instructions, new_nr_allocated * sizeof(struct ins));
119 new_instructions = calloc(new_nr_allocated, sizeof(struct ins));
129 struct ins *ins;
135 ins = &arch->instructions[arch->nr_instructions];
136 ins->name = strdup(name);
137 if (!ins->name)
140 ins->ops = ops;
234 static int ins__raw_scnprintf(struct ins *ins, char *bf, size_t size,
237 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->raw);
240 int ins__scnprintf(struct ins *ins, char *bf, size_t size,
243 if (ins->ops->scnprintf)
244 return ins->ops->scnprintf(ins, bf, size, ops, max_ins_name);
246 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name);
309 static int call__scnprintf(struct ins *ins, char *bf, size_t size,
313 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.sym->name);
316 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name);
319 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.name);
321 return scnprintf(bf, size, "%-*s *%" PRIx64, max_ins_name, ins->name, ops->target.addr);
329 bool ins__is_call(const struct ins *ins)
331 return ins->ops == &call_ops || ins->ops == &s390_call_ops || ins->ops == &loongarch_call_ops;
432 static int jump__scnprintf(struct ins *ins, char *bf, size_t size,
438 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name);
441 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.sym->name);
461 ins->name, c ? c - ops->raw : 0, ops->raw,
470 bool ins__is_jump(const struct ins *ins)
472 return ins->ops == &jump_ops || ins->ops == &loongarch_jump_ops;
508 if (disasm_line__parse(ops->raw, &ops->locked.ins.name, &ops->locked.ops->raw) < 0)
511 ops->locked.ins.ops = ins__find(arch, ops->locked.ins.name);
513 if (ops->locked.ins.ops == NULL)
516 if (ops->locked.ins.ops->parse &&
517 ops->locked.ins.ops->parse(arch, ops->locked.ops, ms) < 0)
527 static int lock__scnprintf(struct ins *ins, char *bf, size_t size,
532 if (ops->locked.ins.ops == NULL)
533 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name);
535 printed = scnprintf(bf, size, "%-*s ", max_ins_name, ins->name);
536 return printed + ins__scnprintf(&ops->locked.ins, bf + printed,
542 struct ins *ins = &ops->locked.ins;
544 if (ins->ops && ins->ops->free)
545 ins->ops->free(ops->locked.ops);
621 static int mov__scnprintf(struct ins *ins, char *bf, size_t size,
624 return scnprintf(bf, size, "%-*s %s,%s", max_ins_name, ins->name,
661 static int dec__scnprintf(struct ins *ins, char *bf, size_t size,
664 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name,
673 static int nop__scnprintf(struct ins *ins __maybe_unused, char *bf, size_t size,
687 bool ins__is_ret(const struct ins *ins)
689 return ins->ops == &ret_ops;
692 bool ins__is_lock(const struct ins *ins)
694 return ins->ops == &lock_ops;
699 const struct ins *ins = insp;
701 return strcmp(name, ins->name);
706 const struct ins *ia = a;
707 const struct ins *ib = b;
716 qsort(arch->instructions, nmemb, sizeof(struct ins), ins__cmp);
721 struct ins *ins;
729 ins = bsearch(name, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp);
730 if (ins)
731 return ins->ops;
748 ins = bsearch(tmp, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp);
750 return ins ? ins->ops : NULL;
1165 dl->ins.ops = ins__find(arch, dl->ins.name);
1167 if (!dl->ins.ops)
1170 if (dl->ins.ops->parse && dl->ins.ops->parse(arch, &dl->ops, ms) < 0)
1171 dl->ins.ops = NULL;
1265 if (disasm_line__parse(dl->al.line, &dl->ins.name, &dl->ops.raw) < 0)
1282 if (dl->ins.ops && dl->ins.ops->free)
1283 dl->ins.ops->free(&dl->ops);
1286 zfree(&dl->ins.name);
1293 if (raw || !dl->ins.ops)
1294 return scnprintf(bf, size, "%-*s %s", max_ins_name, dl->ins.name, dl->ops.raw);
1296 return ins__scnprintf(&dl->ins, bf, size, &dl->ops, max_ins_name);
1638 if (dl->ins.ops && ins__is_call(&dl->ins) && !dl->ops.target.sym) {
1667 if (dl->ins.ops) {
1668 if (dl->ins.ops != &nop_ops)
2732 printed = fprintf(fp, "%#" PRIx64 " %s", dl->al.offset, dl->ins.name);
2755 if (!dl || !dl->ins.ops || !ins__is_jump(&dl->ins) ||
2842 len = strlen(disasm_line(al)->ins.name);
3026 if (dl->ins.ops && dl->ins.ops->scnprintf) {
3027 if (ins__is_jump(&dl->ins)) {
3035 } else if (ins__is_call(&dl->ins)) {
3039 } else if (ins__is_ret(&dl->ins)) {
3206 } else if (ins__is_call(&disasm_line(al)->ins) &&