Lines Matching refs:ins

72 static int call__scnprintf(struct ins *ins, char *bf, size_t size,
74 static int jump__scnprintf(struct ins *ins, char *bf, size_t size,
79 struct ins *instructions;
122 struct ins *new_instructions;
129 new_instructions = realloc(arch->instructions, new_nr_allocated * sizeof(struct ins));
140 new_instructions = calloc(new_nr_allocated, sizeof(struct ins));
150 struct ins *ins;
156 ins = &arch->instructions[arch->nr_instructions];
157 ins->name = strdup(name);
158 if (!ins->name)
161 ins->ops = ops;
257 static int ins__raw_scnprintf(struct ins *ins, char *bf, size_t size,
260 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->raw);
263 int ins__scnprintf(struct ins *ins, char *bf, size_t size,
266 if (ins->ops->scnprintf)
267 return ins->ops->scnprintf(ins, bf, size, ops, max_ins_name);
269 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name);
332 static int call__scnprintf(struct ins *ins, char *bf, size_t size,
336 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.sym->name);
339 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name);
342 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.name);
344 return scnprintf(bf, size, "%-*s *%" PRIx64, max_ins_name, ins->name, ops->target.addr);
352 bool ins__is_call(const struct ins *ins)
354 return ins->ops == &call_ops || ins->ops == &s390_call_ops || ins->ops == &loongarch_call_ops;
455 static int jump__scnprintf(struct ins *ins, char *bf, size_t size,
461 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name);
464 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.sym->name);
484 ins->name, c ? c - ops->raw : 0, ops->raw,
502 bool ins__is_jump(const struct ins *ins)
504 return ins->ops == &jump_ops || ins->ops == &loongarch_jump_ops;
540 if (disasm_line__parse(ops->raw, &ops->locked.ins.name, &ops->locked.ops->raw) < 0)
543 ops->locked.ins.ops = ins__find(arch, ops->locked.ins.name);
545 if (ops->locked.ins.ops == NULL)
548 if (ops->locked.ins.ops->parse &&
549 ops->locked.ins.ops->parse(arch, ops->locked.ops, ms) < 0)
559 static int lock__scnprintf(struct ins *ins, char *bf, size_t size,
564 if (ops->locked.ins.ops == NULL)
565 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name);
567 printed = scnprintf(bf, size, "%-*s ", max_ins_name, ins->name);
568 return printed + ins__scnprintf(&ops->locked.ins, bf + printed,
574 struct ins *ins = &ops->locked.ins;
576 if (ins->ops && ins->ops->free)
577 ins->ops->free(ops->locked.ops);
685 static int mov__scnprintf(struct ins *ins, char *bf, size_t size,
688 return scnprintf(bf, size, "%-*s %s,%s", max_ins_name, ins->name,
725 static int dec__scnprintf(struct ins *ins, char *bf, size_t size,
728 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name,
737 static int nop__scnprintf(struct ins *ins __maybe_unused, char *bf, size_t size,
751 bool ins__is_ret(const struct ins *ins)
753 return ins->ops == &ret_ops;
756 bool ins__is_lock(const struct ins *ins)
758 return ins->ops == &lock_ops;
763 const struct ins *ins = insp;
765 return strcmp(name, ins->name);
770 const struct ins *ia = a;
771 const struct ins *ib = b;
780 qsort(arch->instructions, nmemb, sizeof(struct ins), ins__cmp);
785 struct ins *ins;
793 ins = bsearch(name, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp);
794 if (ins)
795 return ins->ops;
812 ins = bsearch(tmp, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp);
814 return ins ? ins->ops : NULL;
1274 dl->ins.ops = ins__find(arch, dl->ins.name);
1276 if (!dl->ins.ops)
1279 if (dl->ins.ops->parse && dl->ins.ops->parse(arch, &dl->ops, ms) < 0)
1280 dl->ins.ops = NULL;
1375 if (disasm_line__parse(dl->al.line, &dl->ins.name, &dl->ops.raw) < 0)
1392 if (dl->ins.ops && dl->ins.ops->free)
1393 dl->ins.ops->free(&dl->ops);
1396 zfree(&dl->ins.name);
1403 if (raw || !dl->ins.ops)
1404 return scnprintf(bf, size, "%-*s %s", max_ins_name, dl->ins.name, dl->ops.raw);
1406 return ins__scnprintf(&dl->ins, bf, size, &dl->ops, max_ins_name);
1749 if (dl->ins.ops && ins__is_call(&dl->ins) && !dl->ops.target.sym) {
1778 if (dl->ins.ops) {
1779 if (dl->ins.ops != &nop_ops)
2873 printed = fprintf(fp, "%#" PRIx64 " %s", dl->al.offset, dl->ins.name);
2896 if (!dl || !dl->ins.ops || !ins__is_jump(&dl->ins) ||
2984 len = strlen(disasm_line(al)->ins.name);
3165 if (dl->ins.ops && dl->ins.ops->scnprintf) {
3166 if (ins__is_jump(&dl->ins)) {
3174 } else if (ins__is_call(&dl->ins)) {
3178 } else if (ins__is_ret(&dl->ins)) {
3346 } else if (ins__is_call(&disasm_line(al)->ins) &&
3656 if (!strcmp(dl->ins.name, "lock"))
3733 if (!strcmp(dl->ins.name, "lock") && *dl->ops.raw == '\0') {
3770 if (!strncmp(dl->ins.name, "push", 4) ||
3771 !strncmp(dl->ins.name, "pop", 3) ||
3772 !strncmp(dl->ins.name, "ret", 3))
3858 istat = annotate_data_stat(&ann_insn_stat, dl->ins.name);
3933 if (ins__is_fused(arch, prev_dl->ins.name, dl->ins.name)) {