📄 pdefni86.h
字号:
static byte_seq DP_memcmp = {
16,
push_ds,
xchg_cx_ax,
mov_ds_ax,
or_cx_cx,
repz,
cmpsb,
je, 5,
sbb_rr, cx_cx,
sbb_cx_ffff, /* 3 bytes */
pop_ds
};
/****************************************************************/
/* di memchr( di, al, cx ) zaps dx,es,di,cx */
#define C_memchr_ret HW_D( HW_DI )
#define C_memchr_parms P_DI_AL_CX
#define C_memchr_saves HW_NotD_4( HW_DX, HW_ES, HW_DI, HW_CX )
static byte_seq C_memchr = {
14,
jcxz, 10,
mov_dx_ds,
mov_es_dx,
repnz,
scasb,
jne, 2,
dec_di,
hide2,
mov_di_cx
};
/* cx:di memchr( es:di, al, cx ) zaps di,cx */
#define DF_memchr_ret HW_D_2( HW_DI, HW_CX )
#define DF_memchr_parms P_ESDI_AL_CX
#define DF_memchr_saves HW_NotD_2( HW_DI, HW_CX )
static byte_seq DF_memchr = {
12,
jcxz, 8,
repnz,
scasb,
jne, 4,
dec_di,
mov_cx_es,
hide2,
mov_di_cx
};
/* cx:di memchr( es:di, al, cx ) zaps di,cx */
#define DP_memchr_ret HW_D_2( HW_DI, HW_CX )
#define DP_memchr_parms P_ESDI_AL_CX
#define DP_memchr_saves HW_NotD_2( HW_DI, HW_CX )
static byte_seq DP_memchr = {
12,
jcxz, 8,
repnz,
scasb,
jne, 4,
dec_di,
mov_cx_es,
hide2,
mov_di_cx
};
/****************************************************************/
/* ax strcmp( si, di ) zaps ax,si,di */
#define S_strcmp_ret HW_D( HW_AX )
#define S_strcmp_parms P_SI_DI
#define S_strcmp_saves HW_NotD_3( HW_AX, HW_SI, HW_DI )
static byte_seq S_strcmp = {
14,
lodsb,
mov_ah_atdi,
sub_al_ah,
jne, 5,
inc_di,
cmp_al_ah,
jne, -12,
sbb_ah_ah
};
/* ax strcmp( si, di ) zaps ax,es,si,di,cx */
#define C_strcmp_ret HW_D( HW_AX )
#define C_strcmp_parms P_SI_DI
#define C_strcmp_saves HW_NotD_5( HW_AX, HW_ES, HW_SI, HW_DI, HW_CX )
static byte_seq C_strcmp = {
29,
mov_ax_ds,
mov_es_ax,
cmpsb,
jne, 17,
dec_di,
dec_si,
mov_cx, 0xff, 0xff,
xor_rr, ax_ax,
repnz,
scasb,
not_cx,
sub_rr, di_cx,
repz,
cmpsb,
je, 5,
sbb_rr, ax_ax,
sbb_ax_i, 0xff, 0xff
};
/* ax strcmp( ds:si, es:di ) zaps ax,si,di */
#define ZF_strcmp_ret HW_D( HW_AX )
#define ZF_strcmp_parms P_DSSI_ESDI
#define ZF_strcmp_saves HW_NotD_3( HW_AX, HW_SI, HW_DI )
static byte_seq ZF_strcmp = {
15,
lodsb,
mov_ah_atesdi,
sub_al_ah,
jne, 5,
inc_di,
cmp_al_ah,
jne, -13,
sbb_ah_ah
};
/* ax strcmp( si:ax, es:di ) zaps ax,si,di */
#define ZP_strcmp_ret HW_D( HW_AX )
#define ZP_strcmp_parms P_SIAX_ESDI
#define ZP_strcmp_saves HW_NotD_3( HW_AX, HW_SI, HW_DI )
static byte_seq ZP_strcmp = {
20,
push_ds,
xchg_si_ax,
mov_ds_ax,
lodsb,
mov_ah_atesdi,
sub_al_ah,
jne, 5,
inc_di,
cmp_al_ah,
jne, -13,
sbb_ah_ah,
pop_ds
};
/* cx strcmp( ds:si, es:di ) zaps ax,si,di,cx */
#define DF_strcmp_ret HW_D( HW_CX )
#define DF_strcmp_parms P_DSSI_ESDI
#define DF_strcmp_saves HW_NotD_4( HW_AX, HW_SI, HW_DI, HW_CX )
static byte_seq DF_strcmp = {
25,
cmpsb,
jne, 17,
dec_di,
dec_si,
mov_cx, 0xff, 0xff,
xor_rr, ax_ax,
repnz,
scasb,
not_cx,
sub_rr, di_cx,
repz,
cmpsb,
je, 5,
sbb_rr, cx_cx,
sbb_cx_ffff /* 3 bytes */
};
/* cx strcmp( si:ax, es:di ) zaps ax,si,di,cx */
#define DP_strcmp_ret HW_D( HW_CX )
#define DP_strcmp_parms P_SIAX_ESDI
#define DP_strcmp_saves HW_NotD_4( HW_AX, HW_SI, HW_DI, HW_CX )
static byte_seq DP_strcmp = {
30,
push_ds,
xchg_si_ax,
mov_ds_ax,
cmpsb,
jne, 17,
dec_di,
dec_si,
mov_cx, 0xff, 0xff,
xor_rr, ax_ax,
repnz,
scasb,
not_cx,
sub_rr, di_cx,
repz,
cmpsb,
je, 5,
sbb_rr, cx_cx,
sbb_cx_ffff, /* 3 bytes */
pop_ds
};
/****************************************************************/
/* cx strlen( di ) zaps ax,es,cx,di */
#define C_strlen_ret HW_D( HW_CX )
#define C_strlen_parms P_DI
#define C_strlen_saves HW_NotD_4( HW_AX, HW_ES, HW_CX, HW_DI )
static byte_seq C_strlen = {
14,
mov_ax_ds,
mov_es_ax,
mov_cx, 0xff, 0xff,
xor_rr, ax_ax,
repnz,
scasb,
not_cx,
dec_cx
};
/* cx strlen( es:di ) zaps ax,cx,di */
#define DF_strlen_ret HW_D( HW_CX )
#define DF_strlen_parms P_ESDI
#define DF_strlen_saves HW_NotD_3( HW_AX, HW_CX, HW_DI )
static byte_seq DF_strlen = {
10,
mov_cx, 0xff, 0xff,
xor_rr, ax_ax,
repnz,
scasb,
not_cx,
dec_cx
};
/* cx strlen( es:di ) zaps ax,cx,di */
#define DP_strlen_ret HW_D( HW_CX )
#define DP_strlen_parms P_ESDI
#define DP_strlen_saves HW_NotD_3( HW_AX, HW_CX, HW_DI )
static byte_seq DP_strlen = {
10,
mov_cx, 0xff, 0xff,
xor_rr, ax_ax,
repnz,
scasb,
not_cx,
dec_cx
};
/****************************************************************/
#define C_abs_ret HW_D( HW_AX )
#define C_abs_parms P_AX
#define C_abs_saves HW_NotD_2( HW_AX, HW_DX )
static byte_seq C_abs = {
5,
cwd,
xor_rr, ax_dx,
sub_rr, ax_dx
};
/****************************************************************/
#define C_labs_ret HW_D_2( HW_AX, HW_DX )
#define C_labs_parms P_AXDX
#define C_labs_saves HW_NotD_2( HW_AX, HW_DX )
static byte_seq C_labs = {
11,
or_dx_dx,
jge, 7,
neg_ax,
adc_dx_0,
neg_dx
};
/****************************************************************/
#define C_inp_ret HW_D( HW_AX )
#define C_inp_parms P_DX
#define C_inp_saves HW_NotD( HW_AX )
static byte_seq C_inp = {
3,
in_al_dx,
sub_ah_ah
};
/****************************************************************/
#define C_inpw_ret HW_D( HW_AX )
#define C_inpw_parms P_DX
#define C_inpw_saves HW_NotD( HW_AX )
static byte_seq C_inpw = {
1,
in_ax_dx
};
/****************************************************************/
#define C_outp_ret HW_D( HW_AX )
#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_AX )
#define C_outpw_parms P_DX_AX
#define C_outpw_saves HW_NotD( HW_EMPTY )
static byte_seq C_outpw = {
1,
out_dx_ax
};
/****************************************************************/
#define C_movedata_ret HW_D( HW_EMPTY )
#define C_movedata_parms P_AX_SI_ES_DI_CX
#define C_movedata_saves HW_NotD_3( HW_CX, HW_SI, HW_DI )
static byte_seq C_movedata = {
12,
push_ds,
mov_ds_ax,
shr_cx_1,
rep,
movsw,
adc_cx_cx,
rep,
movsb,
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 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -