mirror of
https://gitlab.os-k.eu/os-k-team/kvisc.git
synced 2023-08-25 14:05:46 +02:00
vm
This commit is contained in:
parent
10beb59a31
commit
c667bd23fc
13
vm/pc/decd.c
13
vm/pc/decd.c
@ -34,7 +34,7 @@ void decode(ctx_t *ctx)
|
|||||||
acc_t p1 = { 0 };
|
acc_t p1 = { 0 };
|
||||||
acc_t p2 = { 0 };
|
acc_t p2 = { 0 };
|
||||||
|
|
||||||
bool rep = 0
|
bool rep = 0;
|
||||||
uint cond = 0;
|
uint cond = 0;
|
||||||
bool lock, nomore;
|
bool lock, nomore;
|
||||||
|
|
||||||
@ -228,7 +228,7 @@ void extract_param(ctx_t *ctx, acc_t *p, uchar fmt)
|
|||||||
imm2 = ctx->get(ctx);
|
imm2 = ctx->get(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
p->addr = R(reg1) + R(reg2) * imm1 + imm2;
|
p->addr = R(reg1) + R(reg2) * imm1 + (long)imm2;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -248,6 +248,8 @@ static bool eval_cond(ctx_t *ctx, uint cond)
|
|||||||
|
|
||||||
switch (cond)
|
switch (cond)
|
||||||
{
|
{
|
||||||
|
case CD_NONE: ok = 1; break;
|
||||||
|
|
||||||
case CD_C: ok = flg&CF; break;
|
case CD_C: ok = flg&CF; break;
|
||||||
case CD_O: ok = flg&OF; break;
|
case CD_O: ok = flg&OF; break;
|
||||||
case CD_Z: ok = flg&ZF; break;
|
case CD_Z: ok = flg&ZF; break;
|
||||||
@ -359,9 +361,6 @@ void exec_instr(
|
|||||||
// Debugging
|
// Debugging
|
||||||
dump_instr(ctx, in, p1, p2, lock, rep, cond, pc);
|
dump_instr(ctx, in, p1, p2, lock, rep, cond, pc);
|
||||||
|
|
||||||
if (rep && !cond)
|
|
||||||
cond = CD_CXZ;
|
|
||||||
|
|
||||||
do_rep:
|
do_rep:
|
||||||
|
|
||||||
if (!eval_cond(ctx, cond))
|
if (!eval_cond(ctx, cond))
|
||||||
@ -384,11 +383,9 @@ do_rep:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rep)
|
if (rep && rcx > 0)
|
||||||
{
|
{
|
||||||
if (cond == CD_CXZ)
|
|
||||||
rcx--;
|
rcx--;
|
||||||
|
|
||||||
goto do_rep;
|
goto do_rep;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
21
vm/pc/decd.h
21
vm/pc/decd.h
@ -93,24 +93,3 @@ void extract_param(ctx_t *ctx,
|
|||||||
acc_t *p,
|
acc_t *p,
|
||||||
uchar fmt);
|
uchar fmt);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user