Rizin
unix-like reverse engineering framework and cli tools
disas-asm.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: 1999-2017 Free Software Foundation, Inc.
2 // SPDX-License-Identifier: GPL-3.0-or-later
3 
4 /* Interface between the opcode library and its callers.
5 
6  Copyright (C) 1999-2017 Free Software Foundation, Inc.
7 
8  This program is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 3, or (at your option)
11  any later version.
12 
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 51 Franklin Street - Fifth Floor,
21  Boston, MA 02110-1301, USA.
22 
23  Written by Cygnus Support, 1993.
24 
25  The opcode library (libopcodes.a) provides instruction decoders for
26  a large variety of instruction sets, callable with an identical
27  interface, for making instruction-processing programs more independent
28  of the instruction set being processed. */
29 
30 #ifndef DIS_ASM_H
31 #define DIS_ASM_H
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 #include <stdio.h>
38 #include <string.h>
39 #include "mybfd.h"
40 
41 #define bfd_zalloc calloc
42 #define bfd_malloc malloc
43 #define xmalloc malloc
44 
45 typedef int (*fprintf_ftype)(void *, const char *, ...) ATTRIBUTE_FPTR_PRINTF_2;
46 
48  dis_noninsn, /* Not a valid instruction. */
49  dis_nonbranch, /* Not a branch instruction. */
50  dis_branch, /* Unconditional branch. */
51  dis_condbranch, /* Conditional branch. */
52  dis_jsr, /* Jump to subroutine. */
53  dis_condjsr, /* Conditional jump to subroutine. */
54  dis_dref, /* Data reference instruction. */
55  dis_dref2 /* Two data references in instruction. */
56 };
57 
58 /* This struct is passed into the instruction decoding routine,
59  and is passed back out into each callback. The various fields are used
60  for conveying information from your main routine into your callbacks,
61  for passing information into the instruction decoders (such as the
62  addresses of the callback functions), or for passing information
63  back from the instruction decoders to their callers.
64 
65  It must be initialized before it is first passed; this can be done
66  by hand, or using one of the initialization macros below. */
67 
68 typedef struct disassemble_info {
70  void *stream;
72 
73  /* Target description. We could replace this with a pointer to the bfd,
74  but that would require one. There currently isn't any such requirement
75  so to avoid introducing one we record these explicitly. */
76  /* The bfd_flavour. This can be bfd_target_unknown_flavour. */
77  enum bfd_flavour flavour;
78  /* The bfd_arch value. */
80  /* The bfd_mach value. */
81  unsigned long mach;
82  /* Endianness (for bi-endian cpus). Mono-endian cpus can ignore this. */
83  enum bfd_endian endian;
84  /* Endianness of code, for mixed-endian situations such as ARM BE8. */
86  /* An arch/mach-specific bitmask of selected instruction subsets, mainly
87  for processors with run-time-switchable instruction sets. The default,
88  zero, means that there is no constraint. CGEN-based opcodes ports
89  may use ISA_foo masks. */
90  void *insn_sets;
91 
92  /* Some targets need information about the current section to accurately
93  display insns. If this is NULL, the target disassembler function
94  will have to make its best guess. */
96 
97  /* An array of pointers to symbols either at the location being disassembled
98  or at the start of the function being disassembled. The array is sorted
99  so that the first symbol is intended to be the one used. The others are
100  present for any misc. purposes. This is not set reliably, but if it is
101  not NULL, it is correct. */
103  /* Number of symbols in array. */
105 
106  /* Symbol table provided for targets that want to look at it. This is
107  used on Arm to find mapping symbols and determine Arm/Thumb code. */
111 
112  /* For use by the disassembler.
113  The top 16 bits are reserved for public use (and are documented here).
114  The bottom 16 bits are for the internal use of the disassembler. */
115  unsigned long flags;
116  /* Set if the disassembler has determined that there are one or more
117  relocations associated with the instruction being disassembled. */
118 #define INSN_HAS_RELOC (1LL << 31)
119  /* Set if the user has requested the disassembly of data as well as code. */
120 #define DISASSEMBLE_DATA (1LL << 30)
121  /* Set if the user has specifically set the machine type encoded in the
122  mach field of this structure. */
123 #define USER_SPECIFIED_MACHINE_TYPE (1LL << 29)
124 
125  /* Use internally by the target specific disassembly code. */
127 
128  /* Function used to get bytes to disassemble. MEMADDR is the
129  address of the stuff to be disassembled, MYADDR is the address to
130  put the bytes in, and LENGTH is the number of bytes to read.
131  INFO is a pointer to this struct.
132  Returns an errno value or 0 for success. */
133  int (*read_memory_func)(bfd_vma memaddr, bfd_byte *myaddr, unsigned int length,
134  struct disassemble_info *dinfo);
135 
136  /* Function which should be called if we get an error that we can't
137  recover from. STATUS is the errno value from read_memory_func and
138  MEMADDR is the address that we were trying to read. INFO is a
139  pointer to this struct. */
140  void (*memory_error_func)(int status, bfd_vma memaddr, struct disassemble_info *dinfo);
141 
142  /* Function called to print ADDR. */
144 
145  /* Function called to determine if there is a symbol at the given ADDR.
146  If there is, the function returns 1, otherwise it returns 0.
147  This is used by ports which support an overlay manager where
148  the overlay number is held in the top part of an address. In
149  some circumstances we want to include the overlay number in the
150  address, (normally because there is a symbol associated with
151  that address), but sometimes we want to mask out the overlay bits. */
153 
154  /* Function called to check if a SYMBOL is can be displayed to the user.
155  This is used by some ports that want to hide special symbols when
156  displaying debugging outout. */
158 
159  /* These are for buffer_read_memory. */
162  unsigned int buffer_length;
163 
164  /* This variable may be set by the instruction decoder. It suggests
165  the number of bytes objdump should display on a single line. If
166  the instruction decoder sets this, it should always set it to
167  the same value in order to get reasonable looking output. */
169 
170  /* The next two variables control the way objdump displays the raw data. */
171  /* For example, if bytes_per_line is 8 and bytes_per_chunk is 4, the */
172  /* output will look like this:
173  00: 00000000 00000000
174  with the chunks displayed according to "display_endian". */
177 
178  /* Number of octets per incremented target address
179  Normally one, but some DSPs have byte sizes of 16 or 32 bits. */
180  unsigned int octets_per_byte;
181 
182  /* The number of zeroes we want to see at the end of a section before we
183  start skipping them. */
184  unsigned int skip_zeroes;
185 
186  /* The number of zeroes to skip at the end of a section. If the number
187  of zeroes at the end is between SKIP_ZEROES_AT_END and SKIP_ZEROES,
188  they will be disassembled. If there are fewer than
189  SKIP_ZEROES_AT_END, they will be skipped. This is a heuristic
190  attempt to avoid disassembling zeroes inserted by section
191  alignment. */
192  unsigned int skip_zeroes_at_end;
193 
194  /* Whether the disassembler always needs the relocations. */
196 
197  /* Results from instruction decoders. Not all decoders yet support
198  this information. This info is set each time an instruction is
199  decoded, and is only valid for the last such instruction.
200 
201  To determine whether this decoder supports this information, set
202  insn_info_valid to 0, decode an instruction, then check it. */
203 
204  char insn_info_valid; /* Branch info has been set. */
205  char branch_delay_insns; /* How many sequential insn's will run before
206  a branch takes effect. (0 = normal) */
207  char data_size; /* Size of data reference in insn, in bytes */
208  enum dis_insn_type insn_type; /* Type of instruction */
209  bfd_vma target; /* Target address of branch or dref, if known;
210  zero if unknown. */
211  bfd_vma target2; /* Second target address for dref2 */
212 
213  /* Command line options specific to the target disassembler. */
215 
216  /* If non-zero then try not disassemble beyond this address, even if
217  there are values left in the buffer. This address is the address
218  of the nearest symbol forwards from the start of the disassembly,
219  and it is assumed that it lies on the boundary between instructions.
220  If an instruction spans this address then this is an error in the
221  file being disassembled. */
223 
225 
226 /* This struct is used to pass information about valid disassembler options
227  and their descriptions from the target to the generic GDB functions that
228  set and display them. */
229 
230 typedef struct
231 {
232  const char **name;
233  const char **description;
235 
236 /* Standard disassemblers. Disassemble one instruction at the given
237  target address. Return number of octets processed. */
239 
334 
338 
354 
355 /* Fetch the disassembler for a given BFD, if that support is available. */
357 
358 /* Amend the disassemble_info structure as necessary for the target architecture.
359  Should only be called after initialising the info->arch field. */
361 
362 /* Document any target specific options available from the disassembler. */
363 extern void disassembler_usage(FILE *);
364 
365 /* Remove whitespace and consecutive commas. */
367 
368 /* Like STRCMP, but treat ',' the same as '\0' so that we match
369  strings like "foobar" against "foobar,xxyyzz,...". */
370 extern int disassembler_options_cmp(const char *, const char *);
371 
372 /* A helper function for FOR_EACH_DISASSEMBLER_OPTION. */
373 static inline char *
375  char *opt = strchr(options, ',');
376  if (opt != NULL)
377  opt++;
378  return opt;
379 }
380 
381 /* A macro for iterating over each comma separated option in OPTIONS. */
382 #define FOR_EACH_DISASSEMBLER_OPTION(OPT, OPTIONS) \
383  for ((OPT) = (OPTIONS); \
384  (OPT) != NULL; \
385  (OPT) = next_disassembler_option(OPT))
386 
387 /* This block of definitions is for particular callers who read instructions
388  into a buffer before calling the instruction decoder. */
389 
390 /* Here is a function which callers may wish to use for read_memory_func.
391  It gets bytes from a buffer. */
392 extern int buffer_read_memory(bfd_vma, bfd_byte *, unsigned int, struct disassemble_info *);
393 
394 /* This function goes with buffer_read_memory.
395  It prints a message using info->fprintf_func and info->stream. */
396 extern void perror_memory(int, bfd_vma, struct disassemble_info *);
397 
398 /* Just print the address in hex. This is included for completeness even
399  though both GDB and objdump provide their own (to print symbolic
400  addresses). */
402 
403 /* Always true. */
405 
406 /* Also always true. */
408 
409 /* Method to initialize a disassemble_info struct. This should be
410  called by all applications creating such a struct. */
411 extern void init_disassemble_info(struct disassemble_info *dinfo, void *stream,
413 
414 extern int print_insn_tricore(bfd_vma memaddr, struct disassemble_info *info);
415 
416 /* For compatibility with existing code. */
417 #define INIT_DISASSEMBLE_INFO(INFO, STREAM, FPRINTF_FUNC) \
418  init_disassemble_info(&(INFO), (STREAM), (fprintf_ftype)(FPRINTF_FUNC))
419 #define INIT_DISASSEMBLE_INFO_NO_ARCH(INFO, STREAM, FPRINTF_FUNC) \
420  init_disassemble_info(&(INFO), (STREAM), (fprintf_ftype)(FPRINTF_FUNC))
421 
422 #define DECLARE_GENERIC_FPRINTF_FUNC() \
423  static int generic_fprintf_func(void *stream, const char *format, ...) { \
424  int ret; \
425  va_list ap; \
426  if (!buf_global || !format) { \
427  return 0; \
428  } \
429  va_start(ap, format); \
430  ret = rz_strbuf_vappendf(buf_global, format, ap); \
431  va_end(ap); \
432  return ret; \
433  }
434 
435 #define DECLARE_GENERIC_PRINT_ADDRESS_FUNC() \
436  static void generic_print_address_func(bfd_vma address, struct disassemble_info *info) { \
437  if (!buf_global) { \
438  return; \
439  } \
440  rz_strbuf_appendf(buf_global, "0x%08" PFMT64x, (ut64)address); \
441  }
442 
443 #ifdef __cplusplus
444 }
445 #endif
446 
447 #ifdef _MSC_VER
448 #undef xmalloc
449 #endif
450 
451 #endif /* ! defined (DIS_ASM_H) */
RzBinInfo * info(RzBinFile *bf)
Definition: bin_ne.c:86
#define NULL
Definition: cris-opc.c:27
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len static semflg const void static shmflg const struct timespec struct timespec static rem const char static group const void length
Definition: sflib.h:133
int print_insn_i386_att(bfd_vma, disassemble_info *)
int print_insn_tic54x(bfd_vma, disassemble_info *)
int print_insn_d30v(bfd_vma, disassemble_info *)
int print_insn_metag(bfd_vma, disassemble_info *)
int print_insn_v850(bfd_vma, disassemble_info *)
int print_insn_z80(bfd_vma, disassemble_info *)
int print_insn_frv(bfd_vma, disassemble_info *)
void print_ppc_disassembler_options(FILE *)
int print_insn_ft32(bfd_vma, disassemble_info *)
int print_insn_rl78(bfd_vma, disassemble_info *)
int print_insn_alpha(bfd_vma, disassemble_info *)
int(* fprintf_ftype)(void *, const char *,...) ATTRIBUTE_FPTR_PRINTF_2
Definition: disas-asm.h:45
int disassembler_options_cmp(const char *, const char *)
int print_insn_m68hc12(bfd_vma, disassemble_info *)
int print_insn_z8002(bfd_vma, disassemble_info *)
int print_insn_little_powerpc(bfd_vma, disassemble_info *)
int generic_symbol_at_address(bfd_vma, struct disassemble_info *)
int print_insn_ia64(bfd_vma, disassemble_info *)
int print_insn_sh(bfd_vma, disassemble_info *)
int print_insn_i386_intel(bfd_vma, disassemble_info *)
int print_insn_big_powerpc(bfd_vma, disassemble_info *)
int print_insn_visium(bfd_vma, disassemble_info *)
int print_insn_m9s12xg(bfd_vma, disassemble_info *)
int print_insn_crx(bfd_vma, disassemble_info *)
int print_insn_h8300h(bfd_vma, disassemble_info *)
int print_insn_m88k(bfd_vma, disassemble_info *)
int print_insn_pj(bfd_vma, disassemble_info *)
int print_insn_i370(bfd_vma, disassemble_info *)
int print_insn_riscv(bfd_vma, disassemble_info *)
int print_insn_mmix(bfd_vma, disassemble_info *)
int print_insn_rs6000(bfd_vma, disassemble_info *)
void print_s390_disassembler_options(FILE *)
int print_insn_rl78_g14(bfd_vma, disassemble_info *)
int print_insn_microblaze(bfd_vma, disassemble_info *)
int print_insn_h8300s(bfd_vma, disassemble_info *)
void print_arm_disassembler_options(FILE *)
int print_insn_tic30(bfd_vma, disassemble_info *)
dis_insn_type
Definition: disas-asm.h:47
@ dis_dref2
Definition: disas-asm.h:55
@ dis_dref
Definition: disas-asm.h:54
@ dis_noninsn
Definition: disas-asm.h:48
@ dis_nonbranch
Definition: disas-asm.h:49
@ dis_condbranch
Definition: disas-asm.h:51
@ dis_jsr
Definition: disas-asm.h:52
@ dis_condjsr
Definition: disas-asm.h:53
@ dis_branch
Definition: disas-asm.h:50
void print_arc_disassembler_options(FILE *)
int buffer_read_memory(bfd_vma, bfd_byte *, unsigned int, struct disassemble_info *)
void perror_memory(int, bfd_vma, struct disassemble_info *)
int print_insn_tilegx(bfd_vma, disassemble_info *)
int print_insn_little_score(bfd_vma, disassemble_info *)
bfd_boolean arm_symbol_is_valid(asymbol *, struct disassemble_info *)
int print_insn_lanai(bfd_vma, disassemble_info *)
Definition: lanai-dis.c:106
int print_insn_pru(bfd_vma, disassemble_info *)
int print_insn_avr(bfd_vma, disassemble_info *)
void print_mips_disassembler_options(FILE *)
Definition: mips-dis.c:2110
int print_insn_rl78_g10(bfd_vma, disassemble_info *)
void print_i386_disassembler_options(FILE *)
int print_insn_rx(bfd_vma, disassemble_info *)
struct disassemble_info disassemble_info
int print_insn_nds32(bfd_vma, disassemble_info *)
int print_insn_i386(bfd_vma, disassemble_info *)
static char * next_disassembler_option(char *options)
Definition: disas-asm.h:374
const disasm_options_t * disassembler_options_powerpc(void)
int print_insn_d10v(bfd_vma, disassemble_info *)
int print_insn_xtensa(bfd_vma, disassemble_info *)
Definition: xtensa-dis.c:158
int print_insn_big_arm(bfd_vma, disassemble_info *)
int print_insn_m68k(bfd_vma, disassemble_info *)
int print_insn_ns32k(bfd_vma, disassemble_info *)
void generic_print_address(bfd_vma, struct disassemble_info *)
int print_insn_z8001(bfd_vma, disassemble_info *)
int print_insn_little_mips(bfd_vma, disassemble_info *)
Definition: mips-dis.c:2104
int print_insn_mn10200(bfd_vma, disassemble_info *)
int print_insn_i860(bfd_vma, disassemble_info *)
void disassemble_init_s390(struct disassemble_info *)
int print_insn_ip2k(bfd_vma, disassemble_info *)
int print_insn_tic4x(bfd_vma, disassemble_info *)
int print_insn_dlx(bfd_vma, disassemble_info *)
int(* disassembler_ftype)(bfd_vma, disassemble_info *)
Definition: disas-asm.h:238
void disassemble_init_for_target(struct disassemble_info *dinfo)
int print_insn_tic6x(bfd_vma, disassemble_info *)
disassembler_ftype arc_get_disassembler(bfd *)
disassembler_ftype rl78_get_disassembler(bfd *)
int print_insn_big_nios2(bfd_vma, disassemble_info *)
Definition: nios2-dis.c:422
char * remove_whitespace_and_extra_commas(char *)
bfd_boolean aarch64_symbol_is_valid(asymbol *, struct disassemble_info *)
int print_insn_m32c(bfd_vma, disassemble_info *)
int print_insn_xc16x(bfd_vma, disassemble_info *)
void print_riscv_disassembler_options(FILE *)
int print_insn_mt(bfd_vma, disassemble_info *)
int print_insn_h8500(bfd_vma, disassemble_info *)
int print_insn_m32r(bfd_vma, disassemble_info *)
int print_insn_or1k(bfd_vma, disassemble_info *)
int print_insn_mep(bfd_vma, disassemble_info *)
void disassemble_init_powerpc(struct disassemble_info *)
int print_insn_little_nios2(bfd_vma, disassemble_info *)
Definition: nios2-dis.c:428
int print_insn_big_mips(bfd_vma, disassemble_info *)
Definition: mips-dis.c:2098
bfd_boolean generic_symbol_is_valid(asymbol *, struct disassemble_info *)
int print_insn_fr30(bfd_vma, disassemble_info *)
int print_insn_pdp11(bfd_vma, disassemble_info *)
int print_insn_little_arm(bfd_vma, disassemble_info *)
int print_insn_xstormy16(bfd_vma, disassemble_info *)
int print_insn_lm32(bfd_vma, disassemble_info *)
const disasm_options_t * disassembler_options_arm(void)
int print_insn_iq2000(bfd_vma, disassemble_info *)
int print_insn_aarch64(bfd_vma, disassemble_info *)
Definition: aarch64-dis.c:3248
int print_insn_m68hc11(bfd_vma, disassemble_info *)
void init_disassemble_info(struct disassemble_info *dinfo, void *stream, fprintf_ftype fprintf_func)
int print_insn_bfin(bfd_vma, disassemble_info *)
int print_insn_hppa(bfd_vma, disassemble_info *)
Definition: hppa-dis.c:361
const disasm_options_t * disassembler_options_s390(void)
int print_insn_spu(bfd_vma, disassemble_info *)
int print_insn_mn10300(bfd_vma, disassemble_info *)
disassembler_ftype cris_get_disassembler(bfd *)
Definition: cris-dis.c:1635
int print_insn_h8300(bfd_vma, disassemble_info *)
void disassembler_usage(FILE *)
int print_insn_sh64(bfd_vma, disassemble_info *)
disassembler_ftype disassembler(bfd *)
int print_insn_big_score(bfd_vma, disassemble_info *)
int print_insn_sparc(bfd_vma, disassemble_info *)
Definition: sparc-dis.c:480
int print_insn_m9s12x(bfd_vma, disassemble_info *)
int print_insn_moxie(bfd_vma, disassemble_info *)
int print_insn_tilepro(bfd_vma, disassemble_info *)
void print_aarch64_disassembler_options(FILE *)
Definition: aarch64-dis.c:3381
int print_insn_mcore(bfd_vma, disassemble_info *)
int print_insn_i960(bfd_vma, disassemble_info *)
int print_insn_cr16(bfd_vma, disassemble_info *)
int print_insn_s390(bfd_vma, disassemble_info *)
int print_insn_epiphany(bfd_vma, disassemble_info *)
int print_insn_sh64x_media(bfd_vma, disassemble_info *)
int print_insn_rl78_g13(bfd_vma, disassemble_info *)
int print_insn_xgate(bfd_vma, disassemble_info *)
int print_insn_w65(bfd_vma, disassemble_info *)
int print_insn_vax(bfd_vma, disassemble_info *)
Definition: vax-dis.c:290
int print_insn_tricore(bfd_vma memaddr, struct disassemble_info *info)
Definition: tricore-dis.c:1884
int print_insn_tic80(bfd_vma, disassemble_info *)
int print_insn_msp430(bfd_vma, disassemble_info *)
voidpf stream
Definition: ioapi.h:138
#define ATTRIBUTE_FPTR_PRINTF_2
Definition: ansidecl.h:344
static const char struct stat static buf struct stat static buf static vhangup int options
Definition: sflib.h:145
static const char struct stat static buf struct stat static buf static vhangup int status
Definition: sflib.h:145
unsigned char bfd_byte
Definition: mybfd.h:176
BFD_HOST_U_64_BIT bfd_vma
Definition: mybfd.h:111
bfd_flavour
Definition: mybfd.h:4591
int bfd_boolean
Definition: mybfd.h:98
bfd_endian
Definition: mybfd.h:4617
bfd_architecture
Definition: mybfd.h:1563
string FILE
Definition: benchmark.py:21
static int
Definition: sfsocketcall.h:114
Definition: mybfd.h:4212
const char ** description
Definition: disas-asm.h:233
const char ** name
Definition: disas-asm.h:232
bfd_vma target2
Definition: disas-asm.h:211
unsigned long mach
Definition: disas-asm.h:81
bfd_boolean disassembler_needs_relocs
Definition: disas-asm.h:195
fprintf_ftype fprintf_func
Definition: disas-asm.h:69
bfd_vma target
Definition: disas-asm.h:209
char * disassembler_options
Definition: disas-asm.h:214
bfd_boolean(* symbol_is_valid)(asymbol *, struct disassemble_info *dinfo)
Definition: disas-asm.h:157
enum bfd_endian endian
Definition: disas-asm.h:83
char insn_info_valid
Definition: disas-asm.h:204
unsigned long flags
Definition: disas-asm.h:115
void * application_data
Definition: disas-asm.h:71
unsigned int buffer_length
Definition: disas-asm.h:162
bfd_vma buffer_vma
Definition: disas-asm.h:161
void(* memory_error_func)(int status, bfd_vma memaddr, struct disassemble_info *dinfo)
Definition: disas-asm.h:140
enum bfd_endian endian_code
Definition: disas-asm.h:85
void * private_data
Definition: disas-asm.h:126
void(* print_address_func)(bfd_vma addr, struct disassemble_info *dinfo)
Definition: disas-asm.h:143
void * insn_sets
Definition: disas-asm.h:90
enum bfd_architecture arch
Definition: disas-asm.h:79
asymbol ** symtab
Definition: disas-asm.h:108
unsigned int skip_zeroes_at_end
Definition: disas-asm.h:192
int(* symbol_at_address_func)(bfd_vma addr, struct disassemble_info *dinfo)
Definition: disas-asm.h:152
asection * section
Definition: disas-asm.h:95
unsigned int skip_zeroes
Definition: disas-asm.h:184
int(* read_memory_func)(bfd_vma memaddr, bfd_byte *myaddr, unsigned int length, struct disassemble_info *dinfo)
Definition: disas-asm.h:133
unsigned int octets_per_byte
Definition: disas-asm.h:180
enum bfd_flavour flavour
Definition: disas-asm.h:77
asymbol ** symbols
Definition: disas-asm.h:102
bfd_byte * buffer
Definition: disas-asm.h:160
bfd_vma stop_vma
Definition: disas-asm.h:222
char branch_delay_insns
Definition: disas-asm.h:205
enum dis_insn_type insn_type
Definition: disas-asm.h:208
enum bfd_endian display_endian
Definition: disas-asm.h:176
static int addr
Definition: z80asm.c:58