Lines Matching refs:ins

24 static struct ins *ins__find(const char *name);
35 static int ins__raw_scnprintf(struct ins *ins, char *bf, size_t size,
38 return scnprintf(bf, size, "%-6.6s %s", ins->name, ops->raw);
41 int ins__scnprintf(struct ins *ins, char *bf, size_t size,
44 if (ins->ops->scnprintf)
45 return ins->ops->scnprintf(ins, bf, size, ops);
47 return ins__raw_scnprintf(ins, bf, size, ops);
87 static int call__scnprintf(struct ins *ins, char *bf, size_t size,
91 return scnprintf(bf, size, "%-6.6s %s", ins->name, ops->target.name);
94 return ins__raw_scnprintf(ins, bf, size, ops);
96 return scnprintf(bf, size, "%-6.6s *%" PRIx64, ins->name, ops->target.addr);
104 bool ins__is_call(const struct ins *ins)
106 return ins->ops == &call_ops;
123 static int jump__scnprintf(struct ins *ins, char *bf, size_t size,
126 return scnprintf(bf, size, "%-6.6s %" PRIx64, ins->name, ops->target.offset);
134 bool ins__is_jump(const struct ins *ins)
136 return ins->ops == &jump_ops;
175 ops->locked.ins = ins__find(name);
176 if (ops->locked.ins == NULL)
179 if (!ops->locked.ins->ops)
182 if (ops->locked.ins->ops->parse)
183 ops->locked.ins->ops->parse(ops->locked.ops);
193 static int lock__scnprintf(struct ins *ins, char *bf, size_t size,
198 if (ops->locked.ins == NULL)
199 return ins__raw_scnprintf(ins, bf, size, ops);
201 printed = scnprintf(bf, size, "%-6.6s ", ins->name);
202 return printed + ins__scnprintf(ops->locked.ins, bf + printed,
264 static int mov__scnprintf(struct ins *ins, char *bf, size_t size,
267 return scnprintf(bf, size, "%-6.6s %s,%s", ins->name,
306 static int dec__scnprintf(struct ins *ins, char *bf, size_t size,
309 return scnprintf(bf, size, "%-6.6s %s", ins->name,
318 static int nop__scnprintf(struct ins *ins __maybe_unused, char *bf, size_t size,
331 static struct ins instructions[] = {
411 const struct ins *ins = insp;
413 return strcmp(name, ins->name);
416 static struct ins *ins__find(const char *name)
420 return bsearch(name, instructions, nmemb, sizeof(struct ins), ins__cmp);
496 dl->ins = ins__find(dl->name);
498 if (dl->ins == NULL)
501 if (!dl->ins->ops)
504 if (dl->ins->ops->parse)
505 dl->ins->ops->parse(&dl->ops);
577 if (dl->ins && dl->ins->ops->free)
578 dl->ins->ops->free(&dl->ops);
586 if (raw || !dl->ins)
589 return ins__scnprintf(dl->ins, bf, size, &dl->ops);
832 if (dl->ins && ins__is_call(dl->ins) && !dl->ops.target.name) {
858 if (dl->ins && dl->ins->ops) {
859 if (dl->ins->ops != &nop_ops)