本文整理汇总了C++中calc_ea_dst函数的典型用法代码示例。如果您正苦于以下问题:C++ calc_ea_dst函数的具体用法?C++ calc_ea_dst怎么用?C++ calc_ea_dst使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了calc_ea_dst函数的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: BTR_EwIb
void
BTR_EwIb(UINT32 op)
{
UINT16 *out;
UINT32 src, dst, res, madr;
UINT16 bit;
if (op >= 0xc0) {
CPU_WORKCLOCK(2);
GET_PCBYTE(src);
out = reg16_b20[op];
dst = *out;
bit = BIT_MAKEBIT16(src);
if (dst & bit) {
CPU_FLAGL |= C_FLAG;
res = dst & ~bit;
*out = (UINT16)res;
} else {
CPU_FLAGL &= ~C_FLAG;
}
} else {
CPU_WORKCLOCK(6);
madr = calc_ea_dst(op);
GET_PCBYTE(src);
dst = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr);
bit = BIT_MAKEBIT16(src);
if (dst & bit) {
CPU_FLAGL |= C_FLAG;
} else {
CPU_FLAGL &= ~C_FLAG;
}
res = dst & ~bit;
cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (UINT16)res);
}
}
开发者ID:josejl1987,项目名称:neko-tracer,代码行数:35,代码来源:bit_byte.c
示例2: BTC_EdGd
void
BTC_EdGd(void)
{
UINT32 *out;
UINT32 op, src, dst, res, madr;
UINT32 bit;
PREPART_EA_REG32(op, src);
bit = BIT_MAKEBIT32(src);
if (op >= 0xc0) {
CPU_WORKCLOCK(2);
out = reg32_b20[op];
dst = *out;
if (dst & bit) {
CPU_FLAGL |= C_FLAG;
} else {
CPU_FLAGL &= ~C_FLAG;
}
res = dst ^ bit;
*out = res;
} else {
CPU_WORKCLOCK(7);
madr = calc_ea_dst(op);
madr += BIT_OFFSET32(src);
dst = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr);
if (dst & bit) {
CPU_FLAGL |= C_FLAG;
} else {
CPU_FLAGL &= ~C_FLAG;
}
res = dst ^ bit;
cpu_vmemorywrite_d(CPU_INST_SEGREG_INDEX, madr, res);
}
}
开发者ID:josejl1987,项目名称:neko-tracer,代码行数:34,代码来源:bit_byte.c
示例3: JMP32_Ep
void CPUCALL
JMP32_Ep(UINT32 op)
{
descriptor_t sd;
UINT32 madr;
UINT32 new_ip;
UINT16 new_cs;
UINT16 sreg;
CPU_WORKCLOCK(11);
if (op < 0xc0) {
madr = calc_ea_dst(op);
new_ip = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr);
new_cs = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr + 4);
if (!CPU_STAT_PM || CPU_STAT_VM86) {
/* Real mode or VM86 mode */
/* check new instrunction pointer with new code segment */
load_segreg(CPU_CS_INDEX, new_cs, &sreg, &sd, GP_EXCEPTION);
if (new_ip > sd.u.seg.limit) {
EXCEPTION(GP_EXCEPTION, 0);
}
LOAD_SEGREG(CPU_CS_INDEX, new_cs);
CPU_EIP = new_ip;
} else {
/* Protected mode */
JMPfar_pm(new_cs, new_ip);
}
return;
}
EXCEPTION(UD_EXCEPTION, 0);
}
开发者ID:FREEWING-JP,项目名称:np2pi,代码行数:31,代码来源:ctrl_trans.c
示例4: BTR_EwGw
/*
* BTR
*/
void
BTR_EwGw(void)
{
UINT16 *out;
UINT32 op, src, dst, res, madr;
UINT16 bit;
PREPART_EA_REG16(op, src);
bit = BIT_MAKEBIT16(src);
if (op >= 0xc0) {
CPU_WORKCLOCK(2);
out = reg16_b20[op];
dst = *out;
if (dst & bit) {
CPU_FLAGL |= C_FLAG;
res = dst & ~bit;
*out = (UINT16)res;
} else {
CPU_FLAGL &= ~C_FLAG;
}
} else {
CPU_WORKCLOCK(7);
madr = calc_ea_dst(op);
madr += BIT_OFFSET16(src);
dst = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr);
if (dst & bit) {
CPU_FLAGL |= C_FLAG;
} else {
CPU_FLAGL &= ~C_FLAG;
}
res = dst & ~bit;
cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (UINT16)res);
}
}
开发者ID:josejl1987,项目名称:neko-tracer,代码行数:37,代码来源:bit_byte.c
示例5: BTC_EdIb
void
BTC_EdIb(UINT32 op)
{
UINT32 *out;
UINT32 src, dst, res, madr;
UINT32 bit;
if (op >= 0xc0) {
CPU_WORKCLOCK(2);
GET_PCBYTE(src);
out = reg32_b20[op];
dst = *out;
bit = BIT_MAKEBIT32(src);
if (dst & bit) {
CPU_FLAGL |= C_FLAG;
} else {
CPU_FLAGL &= ~C_FLAG;
}
res = dst ^ bit;
*out = res;
} else {
CPU_WORKCLOCK(6);
madr = calc_ea_dst(op);
GET_PCBYTE(src);
dst = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr);
bit = BIT_MAKEBIT32(src);
if (dst & bit) {
CPU_FLAGL |= C_FLAG;
} else {
CPU_FLAGL &= ~C_FLAG;
}
res = dst ^ bit;
cpu_vmemorywrite_d(CPU_INST_SEGREG_INDEX, madr, res);
}
}
开发者ID:josejl1987,项目名称:neko-tracer,代码行数:35,代码来源:bit_byte.c
示例6: ESC6
void
ESC6(void)
{
UINT32 op, madr;
GET_PCBYTE(op);
// TRACEOUT(("use FPU de %.2x", op));
if (op >= 0xc0) {
} else {
madr = calc_ea_dst(op);
}
}
开发者ID:rururutan,项目名称:np2s,代码行数:12,代码来源:fpdummy.c
示例7: TEST_EwIw
void CPUCALL
TEST_EwIw(UINT32 op)
{
UINT32 src, tmp, madr;
if (op >= 0xc0) {
CPU_WORKCLOCK(2);
tmp = *(reg16_b20[op]);
} else {
CPU_WORKCLOCK(6);
madr = calc_ea_dst(op);
tmp = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr);
}
GET_PCWORD(src);
WORD_AND(tmp, src);
}
开发者ID:aliaspider,项目名称:np2,代码行数:16,代码来源:bit_byte.c
示例8: TEST_EdId
void
TEST_EdId(UINT32 op)
{
UINT32 src, tmp, madr;
if (op >= 0xc0) {
CPU_WORKCLOCK(2);
tmp = *(reg32_b20[op]);
} else {
CPU_WORKCLOCK(6);
madr = calc_ea_dst(op);
tmp = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr);
}
GET_PCDWORD(src);
DWORD_AND(tmp, src);
}
开发者ID:josejl1987,项目名称:neko-tracer,代码行数:16,代码来源:bit_byte.c
示例9: TEST_EbIb
void
TEST_EbIb(UINT32 op)
{
UINT32 src, tmp, madr;
if (op >= 0xc0) {
CPU_WORKCLOCK(2);
tmp = *(reg8_b20[op]);
} else {
CPU_WORKCLOCK(6);
madr = calc_ea_dst(op);
tmp = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr);
}
GET_PCBYTE(src);
BYTE_AND(tmp, src);
}
开发者ID:josejl1987,项目名称:neko-tracer,代码行数:16,代码来源:bit_byte.c
示例10: ESC1
void
ESC1(void)
{
UINT32 op, madr;
GET_PCBYTE(op);
// TRACEOUT(("use FPU d9 %.2x", op));
if (op >= 0xc0) {
} else {
madr = calc_ea_dst(op);
if ((op & 0x38) == 0x38) {
TRACEOUT(("FSTCW"));
cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, 0xffff);
}
}
}
开发者ID:rururutan,项目名称:np2s,代码行数:16,代码来源:fpdummy.c
示例11: LEA_GdM
void
LEA_GdM(void)
{
UINT32 *out;
UINT32 op, dst;
GET_PCBYTE(op);
if (op < 0xc0) {
CPU_WORKCLOCK(2);
out = reg32_b53[op];
dst = calc_ea_dst(op);
*out = dst;
return;
}
EXCEPTION(UD_EXCEPTION, 0);
}
开发者ID:josejl1987,项目名称:neko-tracer,代码行数:16,代码来源:misc_inst.c
示例12: TEST_EdGd
void
TEST_EdGd(void)
{
UINT32 op, src, tmp, madr;
PREPART_EA_REG32(op, src);
if (op >= 0xc0) {
CPU_WORKCLOCK(2);
tmp = *(reg32_b20[op]);
} else {
CPU_WORKCLOCK(7);
madr = calc_ea_dst(op);
tmp = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr);
}
DWORD_AND(tmp, src);
}
开发者ID:josejl1987,项目名称:neko-tracer,代码行数:16,代码来源:bit_byte.c
示例13: SETNLE_Eb
void
SETNLE_Eb(void)
{
UINT32 op, madr;
UINT8 v = CC_NLE?1:0;
GET_PCBYTE(op);
if (op >= 0xc0) {
CPU_WORKCLOCK(2);
*(reg8_b20[op]) = v;
} else {
CPU_WORKCLOCK(3);
madr = calc_ea_dst(op);
cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, v);
}
}
开发者ID:josejl1987,项目名称:neko-tracer,代码行数:16,代码来源:bit_byte.c
示例14: BT_EdGd
void
BT_EdGd(void)
{
UINT32 op, src, dst, madr;
PREPART_EA_REG32(op, src);
if (op >= 0xc0) {
CPU_WORKCLOCK(2);
dst = *(reg32_b20[op]);
} else {
CPU_WORKCLOCK(7);
madr = calc_ea_dst(op);
madr += BIT_OFFSET32(src);
dst = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr);
}
CPU_FLAGL &= ~C_FLAG;
CPU_FLAGL |= (dst >> BIT_INDEX32(src)) & 1;
}
开发者ID:josejl1987,项目名称:neko-tracer,代码行数:18,代码来源:bit_byte.c
示例15: BT_EwIb
void
BT_EwIb(UINT32 op)
{
UINT32 src, dst, madr;
if (op >= 0xc0) {
CPU_WORKCLOCK(2);
GET_PCBYTE(src);
dst = *(reg16_b20[op]);
} else {
CPU_WORKCLOCK(6);
madr = calc_ea_dst(op);
GET_PCBYTE(src);
dst = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr);
}
CPU_FLAGL &= ~C_FLAG;
CPU_FLAGL |= (dst >> BIT_INDEX16(src)) & 1;
}
开发者ID:josejl1987,项目名称:neko-tracer,代码行数:18,代码来源:bit_byte.c
示例16: JMP_Ed
void CPUCALL
JMP_Ed(UINT32 op)
{
UINT32 madr;
UINT32 new_ip;
if (op >= 0xc0) {
CPU_WORKCLOCK(7);
new_ip = *(reg32_b20[op]);
} else {
CPU_WORKCLOCK(11);
madr = calc_ea_dst(op);
new_ip = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr);
}
if (new_ip > CPU_STAT_CS_LIMIT) {
EXCEPTION(GP_EXCEPTION, 0);
}
CPU_EIP = new_ip;
}
开发者ID:FREEWING-JP,项目名称:np2pi,代码行数:19,代码来源:ctrl_trans.c
示例17: BOUND_GdMa
void
BOUND_GdMa(void)
{
UINT32 op, madr;
UINT32 reg;
CPU_WORKCLOCK(13);
GET_PCBYTE(op);
if (op < 0xc0) {
reg = *(reg32_b53[op]);
madr = calc_ea_dst(op);
if (reg >= cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr) &&
reg <= cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr + 4)) {
return;
}
EXCEPTION(BR_EXCEPTION, 0);
return;
}
EXCEPTION(UD_EXCEPTION, 0);
}
开发者ID:FREEWING-JP,项目名称:np2pi,代码行数:20,代码来源:ctrl_trans.c
示例18: CALL_Ew
void CPUCALL
CALL_Ew(UINT32 op)
{
UINT32 madr;
UINT16 new_ip;
CPU_SET_PREV_ESP();
if (op >= 0xc0) {
CPU_WORKCLOCK(7);
new_ip = *(reg16_b20[op]);
} else {
CPU_WORKCLOCK(11);
madr = calc_ea_dst(op);
new_ip = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr);
}
if (new_ip > CPU_STAT_CS_LIMIT) {
EXCEPTION(GP_EXCEPTION, 0);
}
PUSH0_16(CPU_IP);
CPU_EIP = new_ip;
CPU_CLEAR_PREV_ESP();
}
开发者ID:FREEWING-JP,项目名称:np2pi,代码行数:22,代码来源:ctrl_trans.c
示例19: CALL32_Ep
void CPUCALL
CALL32_Ep(UINT32 op)
{
descriptor_t sd;
UINT32 madr;
UINT32 new_ip;
UINT16 new_cs;
UINT16 sreg;
CPU_WORKCLOCK(16);
if (op < 0xc0) {
madr = calc_ea_dst(op);
new_ip = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr);
new_cs = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr + 4);
if (!CPU_STAT_PM || CPU_STAT_VM86) {
/* Real mode or VM86 mode */
CPU_SET_PREV_ESP();
load_segreg(CPU_CS_INDEX, new_cs, &sreg, &sd, GP_EXCEPTION);
if (new_ip > sd.u.seg.limit) {
EXCEPTION(GP_EXCEPTION, 0);
}
PUSH0_32(CPU_CS);
PUSH0_32(CPU_EIP);
LOAD_SEGREG(CPU_CS_INDEX, new_cs);
CPU_EIP = new_ip;
CPU_CLEAR_PREV_ESP();
} else {
/* Protected mode */
CALLfar_pm(new_cs, new_ip);
}
return;
}
EXCEPTION(UD_EXCEPTION, 0);
}
开发者ID:FREEWING-JP,项目名称:np2pi,代码行数:36,代码来源:ctrl_trans.c
注:本文中的calc_ea_dst函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论