本文整理汇总了C++中op_io函数的典型用法代码示例。如果您正苦于以下问题:C++ op_io函数的具体用法?C++ op_io怎么用?C++ op_io使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了op_io函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: op_readpc
void CPUcore::op_sta_isry_w() {
sp = op_readpc();
op_io();
aa.l = op_readsp(sp + 0);
aa.h = op_readsp(sp + 1);
op_io();
op_writedbr(aa.w + regs.y.w + 0, regs.a.l);
L op_writedbr(aa.w + regs.y.w + 1, regs.a.h);
}
示例2: op_readpc
template<void (R65816::*op)()> void R65816::op_read_isry_b() {
sp = op_readpc();
op_io();
aa.l = op_readsp(sp + 0);
aa.h = op_readsp(sp + 1);
op_io();
L rd.l = op_readdbr(aa.w + regs.y.w);
call(op);
}
示例3: op_io
void R65816::op_xba() {
op_io();
L op_io();
regs.a.l ^= regs.a.h;
regs.a.h ^= regs.a.l;
regs.a.l ^= regs.a.h;
regs.p.n = (regs.a.l & 0x80);
regs.p.z = (regs.a.l == 0);
}
示例4: op_io
void CPUcore::op_rtl_n() {
op_io();
op_io();
rd.l = op_readstackn();
rd.h = op_readstackn();
L rd.b = op_readstackn();
regs.pc.b = rd.b;
regs.pc.w = ++rd.w;
}
示例5: op_io
void CPUcore::op_rtl() {
op_io();
op_io();
rd.l = op_readstackn();
rd.h = op_readstackn();
L rd.b = op_readstackn();
regs.pc.b = rd.b;
regs.pc.w = ++rd.w;
if(regs.e) regs.s.h = 0x01;
}
示例6: op_readpc
template<int mask, int value> alwaysinline void SMP::op_bitbranch() {
dp = op_readpc();
sp = op_readdp(dp);
rd = op_readpc();
op_io();
if((bool)(sp & mask) != value) return;
op_io();
op_io();
regs.pc += (int8)rd;
}
示例7: op_readpc
template<void (CPUcore::*op)()> void CPUcore::op_read_isry_w() {
sp = op_readpc();
op_io();
aa.l = op_readsp(sp + 0);
aa.h = op_readsp(sp + 1);
op_io();
rd.l = op_readdbr(aa.w + regs.y.w + 0);
L rd.h = op_readdbr(aa.w + regs.y.w + 1);
call(op);
}
示例8: op_io
void R65816::op_rtl_e() {
op_io();
op_io();
rd.l = op_readstackn();
rd.h = op_readstackn();
L rd.b = op_readstackn();
regs.pc.b = rd.b;
regs.pc.w = ++rd.w;
regs.s.h = 0x01;
}
示例9: op_readaddr
template<int n> alwaysinline void SMP::op_tcall() {
dp = 0xffde - (n << 1);
rd = op_readaddr(dp + 0) << 0;
rd |= op_readaddr(dp + 1) << 8;
op_io();
op_io();
op_io();
op_writestack(regs.pc >> 8);
op_writestack(regs.pc >> 0);
regs.pc = rd;
}
示例10: op_readpc
template<int adjust> void R65816::op_move_w() {
dp = op_readpc();
sp = op_readpc();
regs.db = dp;
rd.l = op_readlong((sp << 16) | regs.x.w);
op_writelong((dp << 16) | regs.y.w, rd.l);
op_io();
regs.x.w += adjust;
regs.y.w += adjust;
L op_io();
if(regs.a.w--) regs.pc.w -= 3;
}
示例11: op_readpc
template<int n, int i> void SMPcore::op_mov_dpr_reg() {
dp = op_readpc();
op_io();
dp += regs.r[i];
op_readdp<false>(dp);
op_writedp(dp, regs.r[n]);
}
示例12: op_readpc
void R65816::op_bra() {
rd.l = op_readpc();
aa.w = regs.pc.d + (int8)rd.l;
op_io_cond6(aa.w);
L op_io();
regs.pc.w = aa.w;
}
示例13: op_readpc
void SMPcore::op_adjust_dpx() {
dp = op_readpc();
op_io();
rd = op_readdp(dp + regs.x);
rd = (this->*op)(rd);
op_writedp(dp + regs.x, rd);
}
示例14: op_readpc
void SMP::op_read_ya_dp() {
dp = op_readpc();
rd = op_readdp(dp + 0) << 0;
op_io();
rd |= op_readdp(dp + 1) << 8;
regs.ya = (this->*op)(regs.ya, rd);
}
示例15: op_readpc
template<int n, int i> alwaysinline void SMP::op_mov_reg_dpr() {
sp = op_readpc();
op_io();
regs.r[n] = op_readdp(sp + regs.r[i]);
regs.p.n = (regs.r[n] & 0x80);
regs.p.z = (regs.r[n] == 0);
}