📄 dsmarmlib.h
字号:
/* dsmArmLib.h - ARM disassembler header file *//* Copyright 1996-1997 Wind River Systems, Inc. *//*modification history--------------------01c,09oct97.jpd added more Thumb instructions.01b,09sep97,cdp added more instructions.01a,09may96,cdp created.*/#ifndef __INCdsmArmLibh#define __INCdsmArmLibh#ifdef __cplusplusextern "C" {#endif#include "vwModNum.h"/* dsmLib status codes */#define S_dsmLib_UNKNOWN_INSTRUCTION (M_dsmLib | 1)/* * Macro and definitions for simple decoding of instuctions. * To check an instruction, it is ANDed with the IMASK_ and * the result is compared with the IOP_. The macro INSTR_IS * does this and returns !0 to indicate a match. */#define INSTR_IS(i,o) (((i)&(IMASK_##o))==(IOP_##o))#define IMASK_BL 0x0F000000 /* BL xxx */#define IOP_BL 0x0B000000#define IMASK_STMDB_SPP_FP_IP_LR_PC 0xFFFFF800 /* STMDB sp!,{..fp,ip,lr,pc} */#define IOP_STMDB_SPP_FP_IP_LR_PC 0xE92DD800#define IMASK_SUB_FP_IP_4 0xFFFFFFFF /* SUB fp,ip,#4 */#define IOP_SUB_FP_IP_4 0xE24CB004#define IMASK_SUB_FP_IP_4PLUS 0xFFFFF000 /* SUB fp,ip,#4+ */#define IOP_SUB_FP_IP_4PLUS 0xE24CB000#define IMASK_MOV_IP_SP 0xFFFFFFFF /* MOV ip,sp */#define IOP_MOV_IP_SP 0xE1A0C00D#define IMASK_MOVXX_LR_PC 0x0FFFFFFF /* MOVxx lr,pc */#define IOP_MOVXX_LR_PC 0x01A0E00F#define IMASK_STMDB_SPP_AREGS 0xFFFFFFF0 /* STMDB sp!,{a1-a4} */#define IOP_STMDB_SPP_AREGS 0xE92D0000#define IMASK_SUB_SP_SP 0xFFFFF000 /* SUB sp,sp,#n */#define IOP_SUB_SP_SP 0xE24DD000#define IMASK_MOVS_PC_LR 0xFFFFFFFF /* MOVS pc,lr */#define IOP_MOVS_PC_LR 0xE1B0F00E/* Thumb instructions */#define IMASK_T_BL0 0xF800 /* BL prefix */#define IOP_T_BL0 0xF000#define IMASK_T_BL1 0xF800 /* BL */#define IOP_T_BL1 0xF800#define IMASK_T_MOV_LR_PC 0xFFFF /* MOV lr,pc */#define IOP_T_MOV_LR_PC 0x46FE#define IMASK_T_SUB_SP_16 0xFFFF /* SUB sp,#16 */#define IOP_T_SUB_SP_16 0xB084#define IMASK_T_MOV_FP_LO 0xFFC7 /* MOV fp,loreg */#define IOP_T_MOV_FP_LO 0x4683#define IMASK_T_MOV_SP_LO 0xFFC7 /* MOV sp,loreg */#define IOP_T_MOV_SP_LO 0x4685#define IMASK_T_ADD_LO_SP 0xF800 /* ADD loreg, sp, #Imm */#define IOP_T_ADD_LO_SP 0xA800#define IMASK_T_POP_LO 0xFF00 /* POP {reglist} (not PC) */#define IOP_T_POP_LO 0xBC00#define IMASK_T_PUSH_LO 0xFF00 /* PUSH {reglist} (not LR) */#define IOP_T_PUSH_LO 0xB400#define IMASK_T_PUSH 0xFF00 /* PUSH {reglist} (inc LR) */#define IOP_T_PUSH 0xB500#define IMASK_T_BX_LO 0xFFC0 /* BX loreg */#define IOP_T_BX_LO 0x4700#define IMASK_T_MOV_LO_PC 0xFFF8 /* MOV loreg,pc */#define IOP_T_MOV_LO_PC 0x4678#define IMASK_T_MOV_LO_FP 0xFFF8 /* MOV loreg,fp */#define IOP_T_MOV_LO_FP 0x4658IMPORT int dsmNbytes(FAST INSTR *binInst);IMPORT int dsmInst(FAST INSTR *binInst, int address, VOIDFUNCPTR prtAddress);#ifndef _ASMLANGUAGE#endif /* _ASMLANGUAGE */#ifdef __cplusplus}#endif#endif /* __INCdsmArmLibh */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -