Lines Matching refs:ins
77 struct ins *instructions;
105 struct ins *new_instructions;
112 new_instructions = realloc(arch->instructions, new_nr_allocated * sizeof(struct ins));
123 new_instructions = calloc(new_nr_allocated, sizeof(struct ins));
133 struct ins *ins;
139 ins = &arch->instructions[arch->nr_instructions];
140 ins->name = strdup(name);
141 if (!ins->name)
144 ins->ops = ops;
225 static int ins__raw_scnprintf(struct ins *ins, char *bf, size_t size,
228 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->raw);
231 int ins__scnprintf(struct ins *ins, char *bf, size_t size,
234 if (ins->ops->scnprintf)
235 return ins->ops->scnprintf(ins, bf, size, ops, max_ins_name);
237 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name);
300 static int call__scnprintf(struct ins *ins, char *bf, size_t size,
304 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.sym->name);
307 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name);
310 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.name);
312 return scnprintf(bf, size, "%-*s *%" PRIx64, max_ins_name, ins->name, ops->target.addr);
320 bool ins__is_call(const struct ins *ins)
322 return ins->ops == &call_ops || ins->ops == &s390_call_ops;
423 static int jump__scnprintf(struct ins *ins, char *bf, size_t size,
429 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name);
432 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name, ops->target.sym->name);
452 ins->name, c ? c - ops->raw : 0, ops->raw,
461 bool ins__is_jump(const struct ins *ins)
463 return ins->ops == &jump_ops;
499 if (disasm_line__parse(ops->raw, &ops->locked.ins.name, &ops->locked.ops->raw) < 0)
502 ops->locked.ins.ops = ins__find(arch, ops->locked.ins.name);
504 if (ops->locked.ins.ops == NULL)
507 if (ops->locked.ins.ops->parse &&
508 ops->locked.ins.ops->parse(arch, ops->locked.ops, ms) < 0)
518 static int lock__scnprintf(struct ins *ins, char *bf, size_t size,
523 if (ops->locked.ins.ops == NULL)
524 return ins__raw_scnprintf(ins, bf, size, ops, max_ins_name);
526 printed = scnprintf(bf, size, "%-*s ", max_ins_name, ins->name);
527 return printed + ins__scnprintf(&ops->locked.ins, bf + printed,
533 struct ins *ins = &ops->locked.ins;
535 if (ins->ops && ins->ops->free)
536 ins->ops->free(ops->locked.ops);
599 static int mov__scnprintf(struct ins *ins, char *bf, size_t size,
602 return scnprintf(bf, size, "%-*s %s,%s", max_ins_name, ins->name,
639 static int dec__scnprintf(struct ins *ins, char *bf, size_t size,
642 return scnprintf(bf, size, "%-*s %s", max_ins_name, ins->name,
651 static int nop__scnprintf(struct ins *ins __maybe_unused, char *bf, size_t size,
665 bool ins__is_ret(const struct ins *ins)
667 return ins->ops == &ret_ops;
670 bool ins__is_lock(const struct ins *ins)
672 return ins->ops == &lock_ops;
677 const struct ins *ins = insp;
679 return strcmp(name, ins->name);
684 const struct ins *ia = a;
685 const struct ins *ib = b;
694 qsort(arch->instructions, nmemb, sizeof(struct ins), ins__cmp);
699 struct ins *ins;
707 ins = bsearch(name, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp);
708 return ins ? ins->ops : NULL;
1123 dl->ins.ops = ins__find(arch, dl->ins.name);
1125 if (!dl->ins.ops)
1128 if (dl->ins.ops->parse && dl->ins.ops->parse(arch, &dl->ops, ms) < 0)
1129 dl->ins.ops = NULL;
1221 if (disasm_line__parse(dl->al.line, &dl->ins.name, &dl->ops.raw) < 0)
1238 if (dl->ins.ops && dl->ins.ops->free)
1239 dl->ins.ops->free(&dl->ops);
1242 zfree(&dl->ins.name);
1249 if (raw || !dl->ins.ops)
1250 return scnprintf(bf, size, "%-*s %s", max_ins_name, dl->ins.name, dl->ops.raw);
1252 return ins__scnprintf(&dl->ins, bf, size, &dl->ops, max_ins_name);
1535 if (dl->ins.ops && ins__is_call(&dl->ins) && !dl->ops.target.sym) {
1565 if (dl->ins.ops) {
1566 if (dl->ins.ops != &nop_ops)
2602 printed = fprintf(fp, "%#" PRIx64 " %s", dl->al.offset, dl->ins.name);
2625 if (!dl || !dl->ins.ops || !ins__is_jump(&dl->ins) ||
2712 len = strlen(disasm_line(al)->ins.name);
2866 if (dl->ins.ops && dl->ins.ops->scnprintf) {
2867 if (ins__is_jump(&dl->ins)) {
2875 } else if (ins__is_call(&dl->ins)) {
2879 } else if (ins__is_ret(&dl->ins)) {
3046 } else if (ins__is_call(&disasm_line(al)->ins) &&