| 1 |
|
|
|
void OPPROTO glue(glue(op_movs, SUFFIX), STRING_SUFFIX)(void) |
|
|
{ |
|
|
int v, inc; |
|
|
v = glue(ldu, SUFFIX)(SI_ADDR); |
|
|
glue(st, SUFFIX)(DI_ADDR, v); |
|
|
inc = (DF << SHIFT); |
|
|
INC_SI(); |
|
|
INC_DI(); |
|
|
} |
|
|
|
|
|
void OPPROTO glue(glue(op_rep_movs, SUFFIX), STRING_SUFFIX)(void) |
|
|
{ |
|
|
int v, inc; |
|
|
inc = (DF << SHIFT); |
|
|
while (CX != 0) { |
|
|
v = glue(ldu, SUFFIX)(SI_ADDR); |
|
|
glue(st, SUFFIX)(DI_ADDR, v); |
|
|
INC_SI(); |
|
|
INC_DI(); |
|
|
DEC_CX(); |
|
|
} |
|
|
FORCE_RET(); |
|
|
} |
|
|
|
|
|
void OPPROTO glue(glue(op_stos, SUFFIX), STRING_SUFFIX)(void) |
|
|
{ |
|
|
int inc; |
|
|
glue(st, SUFFIX)(DI_ADDR, EAX); |
|
|
inc = (DF << SHIFT); |
|
|
INC_DI(); |
|
|
} |
|
|
|
|
|
void OPPROTO glue(glue(op_rep_stos, SUFFIX), STRING_SUFFIX)(void) |
|
|
{ |
|
|
int inc; |
|
|
inc = (DF << SHIFT); |
|
|
while (CX != 0) { |
|
|
glue(st, SUFFIX)(DI_ADDR, EAX); |
|
|
INC_DI(); |
|
|
DEC_CX(); |
|
|
} |
|
|
FORCE_RET(); |
|
|
} |
|
|
|
|
|
void OPPROTO glue(glue(op_lods, SUFFIX), STRING_SUFFIX)(void) |
|
|
{ |
|
|
int v, inc; |
|
|
v = glue(ldu, SUFFIX)(SI_ADDR); |
|
|
#if SHIFT == 0 |
|
|
EAX = (EAX & ~0xff) | v; |
|
|
#elif SHIFT == 1 |
|
|
EAX = (EAX & ~0xffff) | v; |
|
|
#else |
|
|
EAX = v; |
|
|
#endif |
|
|
inc = (DF << SHIFT); |
|
|
INC_SI(); |
|
|
} |
|
|
|
|
|
/* don't know if it is used */ |
|
|
void OPPROTO glue(glue(op_rep_lods, SUFFIX), STRING_SUFFIX)(void) |
|
|
{ |
|
|
int v, inc; |
|
|
inc = (DF << SHIFT); |
|
|
while (CX != 0) { |
|
|
v = glue(ldu, SUFFIX)(SI_ADDR); |
|
|
#if SHIFT == 0 |
|
|
EAX = (EAX & ~0xff) | v; |
|
|
#elif SHIFT == 1 |
|
|
EAX = (EAX & ~0xffff) | v; |
|
|
#else |
|
|
EAX = v; |
|
|
#endif |
|
|
INC_SI(); |
|
|
DEC_CX(); |
|
|
} |
|
|
FORCE_RET(); |
|
|
} |
|
|
|
|
|
void OPPROTO glue(glue(op_scas, SUFFIX), STRING_SUFFIX)(void) |
|
|
{ |
|
|
int v, inc; |
|
|
|
|
|
v = glue(ldu, SUFFIX)(DI_ADDR); |
|
|
inc = (DF << SHIFT); |
|
|
INC_DI(); |
|
|
CC_SRC = v; |
|
|
CC_DST = EAX - v; |
|
|
} |
|
|
|
|
| 2 |
void OPPROTO glue(glue(op_repz_scas, SUFFIX), STRING_SUFFIX)(void) |
void OPPROTO glue(glue(op_repz_scas, SUFFIX), STRING_SUFFIX)(void) |
| 3 |
{ |
{ |
| 4 |
int v1, v2, inc; |
int v1, v2, inc; |
| 43 |
FORCE_RET(); |
FORCE_RET(); |
| 44 |
} |
} |
| 45 |
|
|
|
void OPPROTO glue(glue(op_cmps, SUFFIX), STRING_SUFFIX)(void) |
|
|
{ |
|
|
int v1, v2, inc; |
|
|
v1 = glue(ldu, SUFFIX)(SI_ADDR); |
|
|
v2 = glue(ldu, SUFFIX)(DI_ADDR); |
|
|
inc = (DF << SHIFT); |
|
|
INC_SI(); |
|
|
INC_DI(); |
|
|
CC_SRC = v2; |
|
|
CC_DST = v1 - v2; |
|
|
} |
|
|
|
|
| 46 |
void OPPROTO glue(glue(op_repz_cmps, SUFFIX), STRING_SUFFIX)(void) |
void OPPROTO glue(glue(op_repz_cmps, SUFFIX), STRING_SUFFIX)(void) |
| 47 |
{ |
{ |
| 48 |
int v1, v2, inc; |
int v1, v2, inc; |
| 84 |
} |
} |
| 85 |
FORCE_RET(); |
FORCE_RET(); |
| 86 |
} |
} |
|
|
|
|
void OPPROTO glue(glue(op_outs, SUFFIX), STRING_SUFFIX)(void) |
|
|
{ |
|
|
int v, dx, inc; |
|
|
dx = EDX & 0xffff; |
|
|
v = glue(ldu, SUFFIX)(SI_ADDR); |
|
|
glue(cpu_x86_out, SUFFIX)(env, dx, v); |
|
|
inc = (DF << SHIFT); |
|
|
INC_SI(); |
|
|
} |
|
|
|
|
|
void OPPROTO glue(glue(op_rep_outs, SUFFIX), STRING_SUFFIX)(void) |
|
|
{ |
|
|
int v, dx, inc; |
|
|
inc = (DF << SHIFT); |
|
|
dx = EDX & 0xffff; |
|
|
while (CX != 0) { |
|
|
v = glue(ldu, SUFFIX)(SI_ADDR); |
|
|
glue(cpu_x86_out, SUFFIX)(env, dx, v); |
|
|
INC_SI(); |
|
|
DEC_CX(); |
|
|
} |
|
|
FORCE_RET(); |
|
|
} |
|
|
|
|
|
void OPPROTO glue(glue(op_ins, SUFFIX), STRING_SUFFIX)(void) |
|
|
{ |
|
|
int v, dx, inc; |
|
|
dx = EDX & 0xffff; |
|
|
v = glue(cpu_x86_in, SUFFIX)(env, dx); |
|
|
glue(st, SUFFIX)(DI_ADDR, v); |
|
|
inc = (DF << SHIFT); |
|
|
INC_DI(); |
|
|
} |
|
|
|
|
|
void OPPROTO glue(glue(op_rep_ins, SUFFIX), STRING_SUFFIX)(void) |
|
|
{ |
|
|
int v, dx, inc; |
|
|
inc = (DF << SHIFT); |
|
|
dx = EDX & 0xffff; |
|
|
while (CX != 0) { |
|
|
v = glue(cpu_x86_in, SUFFIX)(env, dx); |
|
|
glue(st, SUFFIX)(DI_ADDR, v); |
|
|
INC_DI(); |
|
|
DEC_CX(); |
|
|
} |
|
|
FORCE_RET(); |
|
|
} |
|
| 87 |
|
|
| 88 |
#undef STRING_SUFFIX |
#undef STRING_SUFFIX |
| 89 |
#undef SI_ADDR |
#undef SI_ADDR |