📄 arm2x86_psr.h
字号:
#ifndef _ARM2X86_PSR_H_
#define _ARM2X86_PSR_H_
extern op_table_t op_set_nf;
extern op_table_t op_set_zf;
extern op_table_t op_set_cf;
extern op_table_t op_set_vf;
extern op_table_t op_set_nzcf;
extern op_table_t op_set_nzcvf;
extern op_table_t op_logic_T0_sn;
extern op_table_t op_logic_T0_sz;
extern op_table_t op_logic_T1_sn;
extern op_table_t op_logic_T1_sz;
extern op_table_t op_logic_0_sc;
extern op_table_t op_logic_1_sc;
extern op_table_t op_logicq_T0_T1_sz;
extern op_table_t op_mrs_T0_cpsr;
extern op_table_t op_mrs_T0_spsr;
extern op_table_t op_msr_spsr_T0_T1;
extern op_table_t op_msr_cpsr_T0_T1;
//extern op_table_t op_writesr15;
extern int arm2x86_psr_init();
static __inline__ uint32_t
gen_op_condition(ARMul_State *state, uint32_t cond)
{
uint32_t ret;
switch(cond) {
case EQ:
ret = ZFLAG;
break;
case NE:
ret = !ZFLAG;
break;
case VS:
ret = VFLAG;
break;
case VC:
ret = !VFLAG;
break;
case MI:
ret = NFLAG;
break;
case PL:
ret = !NFLAG;
break;
case CS:
ret = CFLAG;
break;
case CC:
ret = !CFLAG;
break;
case HI:
ret = (CFLAG && !ZFLAG);
break;
case LS:
ret = (!CFLAG || ZFLAG);
break;
case GE:
ret = ((!NFLAG && !VFLAG) || (NFLAG && VFLAG));
break;
case LT:
ret = ((NFLAG && !VFLAG) || (!NFLAG && VFLAG));
break;
case GT:
ret = ((!NFLAG && !VFLAG && !ZFLAG) || (NFLAG && VFLAG && !ZFLAG));
break;
case LE:
ret = ((NFLAG && !VFLAG) || (!NFLAG && VFLAG)) || ZFLAG;
break;
default:
ret = 0;
break;
}
return(ret);
}
#endif //_ARM2X86_PSR_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -