⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dis-asm.h

📁 qemu虚拟机代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* Interface between the opcode library and its callers.   Written by Cygnus Support, 1993.   The opcode library (libopcodes.a) provides instruction decoders for   a large variety of instruction sets, callable with an identical   interface, for making instruction-processing programs more independent   of the instruction set being processed.  */#ifndef DIS_ASM_H#define DIS_ASM_H#include <stdlib.h>#include <stdio.h>#include <string.h>#include <inttypes.h>#define PARAMS(x) xtypedef void *PTR;typedef uint64_t bfd_vma;typedef int64_t bfd_signed_vma;typedef uint8_t bfd_byte;#define sprintf_vma(s,x) sprintf (s, "%0" PRIx64, x)#define BFD64enum bfd_flavour {  bfd_target_unknown_flavour,  bfd_target_aout_flavour,  bfd_target_coff_flavour,  bfd_target_ecoff_flavour,  bfd_target_elf_flavour,  bfd_target_ieee_flavour,  bfd_target_nlm_flavour,  bfd_target_oasys_flavour,  bfd_target_tekhex_flavour,  bfd_target_srec_flavour,  bfd_target_ihex_flavour,  bfd_target_som_flavour,  bfd_target_os9k_flavour,  bfd_target_versados_flavour,  bfd_target_msdos_flavour,  bfd_target_evax_flavour};enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };enum bfd_architecture {  bfd_arch_unknown,    /* File arch not known */  bfd_arch_obscure,    /* Arch known, not one of these */  bfd_arch_m68k,       /* Motorola 68xxx */#define bfd_mach_m68000 1#define bfd_mach_m68008 2#define bfd_mach_m68010 3#define bfd_mach_m68020 4#define bfd_mach_m68030 5#define bfd_mach_m68040 6#define bfd_mach_m68060 7#define bfd_mach_cpu32  8#define bfd_mach_mcf5200  9#define bfd_mach_mcf5206e 10#define bfd_mach_mcf5307  11#define bfd_mach_mcf5407  12#define bfd_mach_mcf528x  13#define bfd_mach_mcfv4e   14#define bfd_mach_mcf521x   15#define bfd_mach_mcf5249   16#define bfd_mach_mcf547x   17#define bfd_mach_mcf548x   18  bfd_arch_vax,        /* DEC Vax */     bfd_arch_i960,       /* Intel 960 */     /* The order of the following is important.       lower number indicates a machine type that        only accepts a subset of the instructions       available to machines with higher numbers.       The exception is the "ca", which is       incompatible with all other machines except        "core". */#define bfd_mach_i960_core      1#define bfd_mach_i960_ka_sa     2#define bfd_mach_i960_kb_sb     3#define bfd_mach_i960_mc        4#define bfd_mach_i960_xa        5#define bfd_mach_i960_ca        6#define bfd_mach_i960_jx        7#define bfd_mach_i960_hx        8  bfd_arch_a29k,       /* AMD 29000 */  bfd_arch_sparc,      /* SPARC */#define bfd_mach_sparc                 1/* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */#define bfd_mach_sparc_sparclet        2#define bfd_mach_sparc_sparclite       3#define bfd_mach_sparc_v8plus          4#define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */#define bfd_mach_sparc_sparclite_le    6#define bfd_mach_sparc_v9              7#define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */#define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */#define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  *//* Nonzero if MACH has the v9 instruction set.  */#define bfd_mach_sparc_v9_p(mach) \  ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \   && (mach) != bfd_mach_sparc_sparclite_le)  bfd_arch_mips,       /* MIPS Rxxxx */#define bfd_mach_mips3000              3000#define bfd_mach_mips3900              3900#define bfd_mach_mips4000              4000#define bfd_mach_mips4010              4010#define bfd_mach_mips4100              4100#define bfd_mach_mips4300              4300#define bfd_mach_mips4400              4400#define bfd_mach_mips4600              4600#define bfd_mach_mips4650              4650#define bfd_mach_mips5000              5000#define bfd_mach_mips6000              6000#define bfd_mach_mips8000              8000#define bfd_mach_mips10000             10000#define bfd_mach_mips16                16  bfd_arch_i386,       /* Intel 386 */#define bfd_mach_i386_i386 0#define bfd_mach_i386_i8086 1#define bfd_mach_i386_i386_intel_syntax 2#define bfd_mach_x86_64 3#define bfd_mach_x86_64_intel_syntax 4  bfd_arch_we32k,      /* AT&T WE32xxx */  bfd_arch_tahoe,      /* CCI/Harris Tahoe */  bfd_arch_i860,       /* Intel 860 */  bfd_arch_romp,       /* IBM ROMP PC/RT */  bfd_arch_alliant,    /* Alliant */  bfd_arch_convex,     /* Convex */  bfd_arch_m88k,       /* Motorola 88xxx */  bfd_arch_pyramid,    /* Pyramid Technology */  bfd_arch_h8300,      /* Hitachi H8/300 */#define bfd_mach_h8300   1#define bfd_mach_h8300h  2#define bfd_mach_h8300s  3  bfd_arch_powerpc,    /* PowerPC */#define bfd_mach_ppc           0#define bfd_mach_ppc64         1#define bfd_mach_ppc_403       403#define bfd_mach_ppc_403gc     4030#define bfd_mach_ppc_505       505#define bfd_mach_ppc_601       601#define bfd_mach_ppc_602       602#define bfd_mach_ppc_603       603#define bfd_mach_ppc_ec603e    6031#define bfd_mach_ppc_604       604#define bfd_mach_ppc_620       620#define bfd_mach_ppc_630       630#define bfd_mach_ppc_750       750#define bfd_mach_ppc_860       860#define bfd_mach_ppc_a35       35#define bfd_mach_ppc_rs64ii    642#define bfd_mach_ppc_rs64iii   643#define bfd_mach_ppc_7400      7400  bfd_arch_rs6000,     /* IBM RS/6000 */  bfd_arch_hppa,       /* HP PA RISC */  bfd_arch_d10v,       /* Mitsubishi D10V */  bfd_arch_z8k,        /* Zilog Z8000 */#define bfd_mach_z8001         1#define bfd_mach_z8002         2  bfd_arch_h8500,      /* Hitachi H8/500 */  bfd_arch_sh,         /* Hitachi SH */#define bfd_mach_sh            1#define bfd_mach_sh2        0x20#define bfd_mach_sh_dsp     0x2d#define bfd_mach_sh2a       0x2a#define bfd_mach_sh2a_nofpu 0x2b#define bfd_mach_sh2e       0x2e#define bfd_mach_sh3        0x30#define bfd_mach_sh3_nommu  0x31#define bfd_mach_sh3_dsp    0x3d#define bfd_mach_sh3e       0x3e#define bfd_mach_sh4        0x40#define bfd_mach_sh4_nofpu  0x41#define bfd_mach_sh4_nommu_nofpu  0x42#define bfd_mach_sh4a       0x4a#define bfd_mach_sh4a_nofpu 0x4b#define bfd_mach_sh4al_dsp  0x4d#define bfd_mach_sh5        0x50  bfd_arch_alpha,      /* Dec Alpha */  bfd_arch_arm,        /* Advanced Risc Machines ARM */#define bfd_mach_arm_2         1#define bfd_mach_arm_2a                2#define bfd_mach_arm_3         3#define bfd_mach_arm_3M        4#define bfd_mach_arm_4                 5#define bfd_mach_arm_4T        6  bfd_arch_ns32k,      /* National Semiconductors ns32000 */  bfd_arch_w65,        /* WDC 65816 */  bfd_arch_tic30,      /* Texas Instruments TMS320C30 */  bfd_arch_v850,       /* NEC V850 */#define bfd_mach_v850          0  bfd_arch_arc,        /* Argonaut RISC Core */#define bfd_mach_arc_base 0  bfd_arch_m32r,       /* Mitsubishi M32R/D */#define bfd_mach_m32r          0  /* backwards compatibility */  bfd_arch_mn10200,    /* Matsushita MN10200 */  bfd_arch_mn10300,    /* Matsushita MN10300 */  bfd_arch_last  };typedef struct symbol_cache_entry{    const char *name;    union    {        PTR p;        bfd_vma i;    } udata;} asymbol;typedef int (*fprintf_ftype) PARAMS((FILE*, const char*, ...));enum dis_insn_type {  dis_noninsn,			/* Not a valid instruction */  dis_nonbranch,		/* Not a branch instruction */  dis_branch,			/* Unconditional branch */  dis_condbranch,		/* Conditional branch */  dis_jsr,			/* Jump to subroutine */  dis_condjsr,			/* Conditional jump to subroutine */  dis_dref,			/* Data reference instruction */  dis_dref2			/* Two data references in instruction */};/* This struct is passed into the instruction decoding routine, 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -