📄 cpu.h
字号:
UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ UINT f_uimm16; \ unsigned int length;#define EXTRACT_IFMT_OR3_CODE \ length = 4; \ f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16); \#define EXTRACT_IFMT_ADDI_VARS \ UINT f_op1; \ UINT f_r1; \ INT f_simm8; \ unsigned int length;#define EXTRACT_IFMT_ADDI_CODE \ length = 2; \ f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ f_simm8 = EXTRACT_MSB0_INT (insn, 16, 8, 8); \#define EXTRACT_IFMT_ADDV3_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ INT f_simm16; \ unsigned int length;#define EXTRACT_IFMT_ADDV3_CODE \ length = 4; \ f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16); \#define EXTRACT_IFMT_BC8_VARS \ UINT f_op1; \ UINT f_r1; \ SI f_disp8; \ unsigned int length;#define EXTRACT_IFMT_BC8_CODE \ length = 2; \ f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ f_disp8 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4)))); \#define EXTRACT_IFMT_BC24_VARS \ UINT f_op1; \ UINT f_r1; \ SI f_disp24; \ unsigned int length;#define EXTRACT_IFMT_BC24_CODE \ length = 4; \ f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ f_disp24 = ((((EXTRACT_MSB0_INT (insn, 32, 8, 24)) << (2))) + (pc)); \#define EXTRACT_IFMT_BEQ_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ SI f_disp16; \ unsigned int length;#define EXTRACT_IFMT_BEQ_CODE \ length = 4; \ f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ f_disp16 = ((((EXTRACT_MSB0_INT (insn, 32, 16, 16)) << (2))) + (pc)); \#define EXTRACT_IFMT_BEQZ_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ SI f_disp16; \ unsigned int length;#define EXTRACT_IFMT_BEQZ_CODE \ length = 4; \ f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ f_disp16 = ((((EXTRACT_MSB0_INT (insn, 32, 16, 16)) << (2))) + (pc)); \#define EXTRACT_IFMT_CMP_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ unsigned int length;#define EXTRACT_IFMT_CMP_CODE \ length = 2; \ f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \#define EXTRACT_IFMT_CMPI_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ INT f_simm16; \ unsigned int length;#define EXTRACT_IFMT_CMPI_CODE \ length = 4; \ f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16); \#define EXTRACT_IFMT_DIV_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ INT f_simm16; \ unsigned int length;#define EXTRACT_IFMT_DIV_CODE \ length = 4; \ f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16); \#define EXTRACT_IFMT_JL_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ unsigned int length;#define EXTRACT_IFMT_JL_CODE \ length = 2; \ f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \#define EXTRACT_IFMT_LD24_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_uimm24; \ unsigned int length;#define EXTRACT_IFMT_LD24_CODE \ length = 4; \ f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ f_uimm24 = EXTRACT_MSB0_UINT (insn, 32, 8, 24); \#define EXTRACT_IFMT_LDI16_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ INT f_simm16; \ unsigned int length;#define EXTRACT_IFMT_LDI16_CODE \ length = 4; \ f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16); \#define EXTRACT_IFMT_MVFACHI_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ unsigned int length;#define EXTRACT_IFMT_MVFACHI_CODE \ length = 2; \ f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \#define EXTRACT_IFMT_MVFC_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ unsigned int length;#define EXTRACT_IFMT_MVFC_CODE \ length = 2; \ f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \#define EXTRACT_IFMT_MVTACHI_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ unsigned int length;#define EXTRACT_IFMT_MVTACHI_CODE \ length = 2; \ f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \#define EXTRACT_IFMT_MVTC_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ unsigned int length;#define EXTRACT_IFMT_MVTC_CODE \ length = 2; \ f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \#define EXTRACT_IFMT_NOP_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ unsigned int length;#define EXTRACT_IFMT_NOP_CODE \ length = 2; \ f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \#define EXTRACT_IFMT_SETH_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ UINT f_hi16; \ unsigned int length;#define EXTRACT_IFMT_SETH_CODE \ length = 4; \ f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ f_hi16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16); \#define EXTRACT_IFMT_SLLI_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_shift_op2; \ UINT f_uimm5; \ unsigned int length;#define EXTRACT_IFMT_SLLI_CODE \ length = 2; \ f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ f_shift_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 3); \ f_uimm5 = EXTRACT_MSB0_UINT (insn, 16, 11, 5); \#define EXTRACT_IFMT_ST_D_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_r2; \ INT f_simm16; \ unsigned int length;#define EXTRACT_IFMT_ST_D_CODE \ length = 4; \ f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16); \#define EXTRACT_IFMT_TRAP_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_op2; \ UINT f_uimm4; \ unsigned int length;#define EXTRACT_IFMT_TRAP_CODE \ length = 2; \ f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ f_uimm4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \#define EXTRACT_IFMT_CLRPSW_VARS \ UINT f_op1; \ UINT f_r1; \ UINT f_uimm8; \ unsigned int length;#define EXTRACT_IFMT_CLRPSW_CODE \ length = 2; \ f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4); \ f_uimm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8); \#define EXTRACT_IFMT_BSET_VARS \ UINT f_op1; \ UINT f_bit4; \ UINT f_uimm3; \ UINT f_op2; \ UINT f_r2; \ INT f_simm16; \ unsigned int length;#define EXTRACT_IFMT_BSET_CODE \ length = 4; \ f_op1 = EXTRACT_MSB0_UINT (insn, 32, 0, 4); \ f_bit4 = EXTRACT_MSB0_UINT (insn, 32, 4, 1); \ f_uimm3 = EXTRACT_MSB0_UINT (insn, 32, 5, 3); \ f_op2 = EXTRACT_MSB0_UINT (insn, 32, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4); \ f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16); \#define EXTRACT_IFMT_BTST_VARS \ UINT f_op1; \ UINT f_bit4; \ UINT f_uimm3; \ UINT f_op2; \ UINT f_r2; \ unsigned int length;#define EXTRACT_IFMT_BTST_CODE \ length = 2; \ f_op1 = EXTRACT_MSB0_UINT (insn, 16, 0, 4); \ f_bit4 = EXTRACT_MSB0_UINT (insn, 16, 4, 1); \ f_uimm3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3); \ f_op2 = EXTRACT_MSB0_UINT (insn, 16, 8, 4); \ f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4); \/* Collection of various things for the trace handler to use. */typedef struct trace_record { IADDR pc; /* FIXME:wip */} TRACE_RECORD;#endif /* CPU_M32RBF_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -