📄 pdefn386.h
字号:
#define C_inpw_ret HW_D( HW_EAX )
#define C_inpw_parms P_DX
#define C_inpw_saves HW_NotD( HW_EAX )
static byte_seq C_inpw = {
4,
{ sub_rr,ax_ax,
size_prefix,
in_ax_dx }
};
#define C_inpd_ret HW_D( HW_EAX )
#define C_inpd_parms P_DX
#define C_inpd_saves HW_NotD( HW_EAX )
static byte_seq C_inpd = {
1,
{ in_ax_dx }
};
#define C_outp_ret HW_D( HW_EAX )
#define C_outp_parms P_DX_AL
#define C_outp_saves HW_NotD( HW_EMPTY )
static byte_seq C_outp = {
1,
{ out_dx_al }
};
#define C_outpw_ret HW_D( HW_EAX )
#define C_outpw_parms P_DX_AX
#define C_outpw_saves HW_NotD( HW_EMPTY )
static byte_seq C_outpw = {
2,
{ size_prefix,
out_dx_ax }
};
#define C_outpd_ret HW_D( HW_EAX )
#define C_outpd_parms P_DX_AX
#define C_outpd_saves HW_NotD( HW_EMPTY )
static byte_seq C_outpd = {
1,
{ out_dx_ax }
};
#define C_movedata_ret HW_D( HW_EMPTY )
#define C_movedata_parms P_AX_SI_DX_DI_CX
#define C_movedata_saves HW_NotD_4( HW_EAX, HW_ECX, HW_ESI, HW_EDI )
static byte_seq C_movedata = {
22,
{ push_ds,
push_es,
mov_ds_ax,
mov_es_dx,
mov_ax_cx,
shr_cx_2,
rep,
movsd,
mov_cl_al,
and_cl,3,
rep,
movsb,
pop_es,
pop_ds }
};
#define C_enable_ret HW_D( HW_EMPTY )
#define C_enable_parms P_AX
#define C_enable_saves HW_NotD( HW_EMPTY )
static byte_seq C_enable = {
2,
{ sti,
cld }
};
#define C_disable_ret HW_D( HW_EMPTY )
#define C_disable_parms P_AX
#define C_disable_saves HW_NotD( HW_EMPTY )
static byte_seq C_disable = {
1,
{ cli }
};
#define C_rotl_ret HW_D( HW_EAX )
#define C_rotl_parms P_AX_CX
#define C_rotl_saves HW_NotD( HW_EAX )
static byte_seq C_rotl = {
2,
{ 0xd3,0xc0 } /* rol ax,cl */
};
#define C_rotr_ret HW_D( HW_EAX )
#define C_rotr_parms P_AX_CX
#define C_rotr_saves HW_NotD( HW_EAX )
static byte_seq C_rotr = {
2,
{ 0xd3,0xc8 } /* ror ax,cl */
};
#define C_8087_fabs_ret HW_D( HW_FLTS )
#define C_8087_fabs_parms P_8087
#define C_8087_fabs_saves HW_NotD( HW_EMPTY )
static byte_seq _8087_fabs = {
2,
{ fabs }
};
#define C_fabs_ret HW_D_2( HW_EDX, HW_EAX )
#define C_fabs_parms P_EDXEAX
#define C_fabs_saves HW_NotD( HW_EDX )
static byte_seq C_fabs = {
4,
{ shl_edx_1,
shr_edx_1 }
};
#define C_min_ret HW_D( HW_EAX )
#define C_min_parms P_AX_DX
#define C_min_saves HW_NotD_2( HW_ECX, HW_EAX )
static byte_seq C_min = {
8,
{ sub_ax_dx,
sbb_cx_cx,
and_ax_cx,
add_ax_dx }
};
#define C_max_ret HW_D( HW_EAX )
#define C_max_parms P_AX_DX
#define C_max_saves HW_NotD_2( HW_ECX, HW_EAX )
static byte_seq C_max = {
9,
{ sub_ax_dx,
cmc,
sbb_cx_cx,
and_ax_cx,
add_ax_dx }
};
static hw_reg_set P_AX_CX[] = {
HW_D( HW_EAX ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY ) };
static hw_reg_set P_DI_SI[] = {
HW_D( HW_EDI ),
HW_D( HW_ESI ),
HW_D( HW_EMPTY ) };
static hw_reg_set P_DI_SI_CX[] = {
HW_D( HW_EDI ),
HW_D( HW_ESI ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_SI_DI_CX[] = {
HW_D( HW_ESI ),
HW_D( HW_EDI ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DI_AX_CX[] = {
HW_D( HW_EDI ),
HW_D( HW_AX ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_EDI_EAX_ECX[] = {
HW_D( HW_EDI ),
HW_D( HW_EAX ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DI_AL_CX[] = {
HW_D( HW_EDI ),
HW_D( HW_AL ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_ESDI_DSSI[] = {
HW_D_2( HW_ES, HW_EDI ),
HW_D_2( HW_DS, HW_ESI ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DXEDI_CXESI_EAX[]= {
HW_D_2( HW_DX, HW_EDI ),
HW_D_2( HW_CX, HW_ESI ),
HW_D( HW_EAX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DXESI_CXEDI_EAX[]= {
HW_D_2( HW_DX, HW_ESI ),
HW_D_2( HW_CX, HW_EDI ),
HW_D( HW_EAX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DXEAX_CXEBX[] = {
HW_D_2( HW_DX, HW_EAX ),
HW_D_2( HW_CX, HW_EBX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_ESDI_DSSI_CX[] = {
HW_D_2( HW_ES, HW_EDI ),
HW_D_2( HW_DS, HW_ESI ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_ESDI_AL_CX[] = {
HW_D_2( HW_ES, HW_EDI ),
HW_D( HW_AL ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DXEDI_AL_ECX[] = {
HW_D_2( HW_DX, HW_EDI ),
HW_D( HW_AL ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_ESDI_AX_CX[] = {
HW_D_2( HW_ES, HW_EDI ),
HW_D( HW_AX ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_ESEDI_EAX_ECX[] = {
HW_D_2( HW_ES, HW_EDI ),
HW_D( HW_EAX ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DXEDI_AX_CX[] = {
HW_D_2( HW_DX, HW_EDI ),
HW_D( HW_AX ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DXEDI_EAX_ECX[] = {
HW_D_2( HW_DX, HW_EDI ),
HW_D( HW_EAX ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_SI_DI[] = {
HW_D( HW_ESI ),
HW_D( HW_EDI ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DSSI_ESDI[] = {
HW_D_2( HW_DS, HW_ESI ),
HW_D_2( HW_ES, HW_EDI ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_SIEAX_CXEDI[] = {
HW_D_2( HW_SI, HW_EAX ),
HW_D_2( HW_CX, HW_EDI ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DSSI_ESDI_CX[] = {
HW_D_2( HW_DS, HW_ESI ),
HW_D_2( HW_ES, HW_EDI ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DSSI_CL[] = {
HW_D_2( HW_DS, HW_ESI ),
HW_D( HW_CL ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_SI_DL[] = {
HW_D( HW_ESI ),
HW_D( HW_DL ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DI[] = {
HW_D( HW_EDI ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_ESDI[] = {
HW_D_2( HW_ES, HW_EDI ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_CXEDI[] = {
HW_D_2( HW_CX, HW_EDI ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_AX[] = {
HW_D( HW_EAX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DX[] = {
HW_D( HW_EDX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DX_AL[] = {
HW_D( HW_EDX ),
HW_D( HW_AL ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_DX_AX[] = {
HW_D( HW_EDX ),
HW_D( HW_EAX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_AX_DX[] = {
HW_D( HW_EAX ),
HW_D( HW_EDX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_AX_SI_DX_DI_CX[]= {
HW_D( HW_EAX ),
HW_D( HW_ESI ),
HW_D( HW_EDX ),
HW_D( HW_EDI ),
HW_D( HW_ECX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_EDXEAX[] = {
HW_D_2( HW_EDX, HW_EAX ),
HW_D( HW_EMPTY )
};
static hw_reg_set P_8087[] = {
HW_D( HW_FLTS ),
HW_D( HW_EMPTY )
};
byte_seq *FlatAlternates[] = {
&S_memset, &FS_memset,
&C_memset, &FC_memset,
&S_memcpy, &FS_memcpy,
&C_memcpy, &FC_memcpy,
&C_memcmp, &FC_memcmp,
&C_memchr, &FC_memchr,
&C_strlen, &FC_strlen,
&C_strcat, &FC_strcat,
NULL, NULL
};
/* these must also work in FLAT model */
struct inline_funcs SInline_Functions[] = {
{ "strcpy", &S_strcpy, S_strcpy_parms, S_strcpy_ret, S_strcpy_saves },
{ "strcmp", &S_strcmp, S_strcmp_parms, S_strcmp_ret, S_strcmp_saves },
{ "strcat", &S_strcat, S_strcat_parms, S_strcat_ret, S_strcat_saves },
{ "strchr", &S_strchr, S_strchr_parms, S_strchr_ret, S_strchr_saves },
{ "memset", &S_memset, S_memset_parms, S_memset_ret, S_memset_saves },
{ "memcpy", &S_memcpy, S_memcpy_parms, S_memcpy_ret, S_memcpy_saves },
{ NULL }
};
/* these must also work in FLAT model */
struct inline_funcs Inline_Functions[] = {
{ "strlen", &C_strlen, C_strlen_parms, C_strlen_ret, C_strlen_saves },
{ "strcpy", &C_strcpy, C_strcpy_parms, C_strcpy_ret, C_strcpy_saves },
{ "strcmp", &C_strcmp, C_strcmp_parms, C_strcmp_ret, C_strcmp_saves },
{ "strcat", &C_strcat, C_strcat_parms, C_strcat_ret, C_strcat_saves },
{ "strchr", &C_strchr, C_strchr_parms, C_strchr_ret, C_strchr_saves },
{ "memcpy", &C_memcpy, C_memcpy_parms, C_memcpy_ret, C_memcpy_saves },
{ "memcmp", &C_memcmp, C_memcmp_parms, C_memcmp_ret, C_memcmp_saves },
{ "memset", &C_memset, C_memset_parms, C_memset_ret, C_memset_saves },
{ "memchr", &C_memchr, C_memchr_parms, C_memchr_ret, C_memchr_saves },
{ ".stosd", &C_stosd, C_stosd_parms, C_stosd_ret, C_stosd_saves },
{ ".stosw", &C_stosw, C_stosw_parms, C_stosw_ret, C_stosw_saves },
{ ".stoswb",&C_stoswb, C_stoswb_parms, C_stoswb_ret, C_stoswb_saves },
{ NULL }
};
struct inline_funcs SBigData_Functions[] = {
{ "strcpy", &Z_strcpy, Z_strcpy_parms, Z_strcpy_ret, Z_strcpy_saves },
{ "strcmp", &Z_strcmp, Z_strcmp_parms, Z_strcmp_ret, Z_strcmp_saves },
{ "strcat", &Z_strcat, Z_strcat_parms, Z_strcat_ret, Z_strcat_saves },
{ "memset", &Z_memset, Z_memset_parms, Z_memset_ret, Z_memset_saves },
{ "memcpy", &Z_memcpy, Z_memcpy_parms, Z_memcpy_ret, Z_memcpy_saves },
{ NULL }
};
struct inline_funcs Flat_Functions[] = {
{ "strcmp", &F_strcmp, F_strcmp_parms, F_strcmp_ret, F_strcmp_saves },
{ ".stosd", &F_stosd, F_stosd_parms, F_stosd_ret, F_stosd_saves },
{ ".stosw", &F_stosw, F_stosw_parms, F_stosw_ret, F_stosw_saves },
{ ".stoswb",&F_stoswb, F_stoswb_parms, F_stoswb_ret, F_stoswb_saves },
{ NULL }
};
struct inline_funcs BigData_Functions[] = {
{ "strlen", &BD_strlen, BD_strlen_parms, BD_strlen_ret, BD_strlen_saves },
{ "strcpy", &BD_strcpy, BD_strcpy_parms, BD_strcpy_ret, BD_strcpy_saves },
{ "strcmp", &BD_strcmp, BD_strcmp_parms, BD_strcmp_ret, BD_strcmp_saves },
{ "strcat", &BD_strcat, BD_strcat_parms, BD_strcat_ret, BD_strcat_saves },
{ "strchr", &BD_strchr, BD_strchr_parms, BD_strchr_ret, BD_strchr_saves },
{ "memcpy", &BD_memcpy, BD_memcpy_parms, BD_memcpy_ret, BD_memcpy_saves },
{ "memcmp", &BD_memcmp, BD_memcmp_parms, BD_memcmp_ret, BD_memcmp_saves },
{ "memset", &BD_memset, BD_memset_parms, BD_memset_ret, BD_memset_saves },
{ "memchr", &BD_memchr, BD_memchr_parms, BD_memchr_ret, BD_memchr_saves },
{ ".stosd", &BD_stosd, BD_stosd_parms, BD_stosd_ret, BD_stosd_saves },
{ ".stosw", &BD_stosw, BD_stosw_parms, BD_stosw_ret, BD_stosw_saves },
{ ".stoswb",&BD_stoswb, BD_stoswb_parms, BD_stoswb_ret, BD_stoswb_saves },
{ NULL }
};
/* these must also work in FLAT model */
struct inline_funcs _8087_Functions[] = {
{ "fabs", &_8087_fabs, C_8087_fabs_parms, C_8087_fabs_ret, C_8087_fabs_saves },
{ NULL }
};
/* memory model independent functions */
/* these must also work in FLAT model except _fmem & _fstr functions */
struct inline_funcs Common_Functions[] = {
{ "abs", &C_abs, C_abs_parms, C_abs_ret, C_abs_saves },
{ "labs", &C_labs, C_labs_parms, C_labs_ret, C_labs_saves },
{ "fabs", &C_fabs, C_fabs_parms, C_fabs_ret, C_fabs_saves },
{ "inp", &C_inp, C_inp_parms, C_inp_ret, C_inp_saves },
{ "inpw", &C_inpw, C_inpw_parms, C_inpw_ret, C_inpw_saves },
{ "inpd", &C_inpd, C_inpd_parms, C_inpd_ret, C_inpd_saves },
{ "outp", &C_outp, C_outp_parms, C_outp_ret, C_outp_saves },
{ "outpw", &C_outpw, C_outpw_parms, C_outpw_ret, C_outpw_saves },
{ "outpd", &C_outpd, C_outpd_parms, C_outpd_ret, C_outpd_saves },
{ "movedata",&C_movedata,C_movedata_parms,C_movedata_ret,C_movedata_saves },
{ "_enable", &C_enable, C_enable_parms, C_enable_ret, C_enable_saves },
{ "_disable",&C_disable,C_disable_parms, C_disable_ret, C_disable_saves },
{ "_rotl", &C_rotl, C_rotl_parms, C_rotl_ret, C_rotl_saves },
{ "_rotr", &C_rotr, C_rotr_parms, C_rotr_ret, C_rotr_saves },
{ "_lrotl", &C_rotl, C_rotl_parms, C_rotl_ret, C_rotl_saves },
{ "_lrotr", &C_rotr, C_rotr_parms, C_rotr_ret, C_rotr_saves },
{ "div", &C_div, C_div_parms, C_div_ret, C_div_saves },
{ "ldiv", &C_div, C_div_parms, C_div_ret, C_div_saves },
{ "_fmemcpy",&DP_memcpy,DP_memcpy_parms, DP_memcpy_ret, DP_memcpy_saves },
{ "_fmemcmp",&DP_memcmp,DP_memcmp_parms, DP_memcmp_ret, DP_memcmp_saves },
{ "_fmemset",&DP_memset,DP_memset_parms, DP_memset_ret, DP_memset_saves },
{ "_fmemchr",&DP_memchr,DP_memchr_parms, DP_memchr_ret, DP_memchr_saves },
{ "_fstrcpy",&DP_strcpy,DP_strcpy_parms, DP_strcpy_ret, DP_strcpy_saves },
{ "_fstrcat",&DP_strcat,DP_strcat_parms, DP_strcat_ret, DP_strcat_saves },
{ "_fstrcmp",&DP_strcmp,DP_strcmp_parms, DP_strcmp_ret, DP_strcmp_saves },
{ "_fstrlen",&DP_strlen,DP_strlen_parms, DP_strlen_ret, DP_strlen_saves },
{ ".min", &C_min, C_min_parms, C_min_ret, C_min_saves },
{ ".max", &C_max, C_max_parms, C_max_ret, C_max_saves },
{ NULL }
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -