mirror of
https://gitlab.os-k.eu/os-k-team/kvisc.git
synced 2023-08-25 14:05:46 +02:00
stack dump doesn't work well
This commit is contained in:
parent
5249e01eeb
commit
cedd8df711
70
instr/INSTRS
70
instr/INSTRS
@ -3,6 +3,54 @@
|
||||
|
||||
nop
|
||||
|
||||
#
|
||||
# Logical instructions
|
||||
#
|
||||
|
||||
not r
|
||||
not m
|
||||
|
||||
and r r
|
||||
and r i
|
||||
and r m
|
||||
and m r
|
||||
and m i
|
||||
and m m
|
||||
|
||||
or r r
|
||||
or r i
|
||||
or r m
|
||||
or m r
|
||||
or m i
|
||||
or m m
|
||||
|
||||
xor r r
|
||||
xor r i
|
||||
xor r m
|
||||
xor m r
|
||||
xor m i
|
||||
xor m m
|
||||
|
||||
# shift left logical
|
||||
shl r r
|
||||
shl r i
|
||||
shl r m
|
||||
shl m r
|
||||
shl m i
|
||||
shl m m
|
||||
|
||||
# shift right logical
|
||||
shr r r
|
||||
shr r i
|
||||
shr r m
|
||||
shr m r
|
||||
shr m i
|
||||
shr m m
|
||||
|
||||
#
|
||||
# Unsigned arithmetic instructions
|
||||
#
|
||||
|
||||
add r r
|
||||
add r i
|
||||
add r m
|
||||
@ -17,13 +65,13 @@ sub m r
|
||||
sub m i
|
||||
sub m m
|
||||
|
||||
# rdx = hi(rax * %0)
|
||||
# rax = lo(rax * %0)
|
||||
# rdx = hi(rax * $0)
|
||||
# rax = lo(rax * $0)
|
||||
mul r
|
||||
mul i
|
||||
|
||||
# rdx = rax % %0
|
||||
# rax = rax / %0
|
||||
# rdx = rax % $0
|
||||
# rax = rax / $0
|
||||
div r
|
||||
div i
|
||||
|
||||
@ -33,17 +81,27 @@ inc m
|
||||
dec r
|
||||
dec m
|
||||
|
||||
#
|
||||
# Movement instructions
|
||||
#
|
||||
|
||||
mov r r
|
||||
mov r i
|
||||
mov r m
|
||||
mov m r
|
||||
mov m i
|
||||
mov m m
|
||||
|
||||
xchg r r
|
||||
xchg r i
|
||||
xchg r m
|
||||
xchg m r
|
||||
xchg m i
|
||||
xchg m m
|
||||
|
||||
#
|
||||
# Stack manipulation instructions
|
||||
#
|
||||
|
||||
push i
|
||||
push r
|
||||
@ -56,6 +114,10 @@ call m
|
||||
|
||||
ret
|
||||
|
||||
#
|
||||
# Supervisor only instructions
|
||||
#
|
||||
|
||||
cli
|
||||
sti
|
||||
|
||||
|
@ -12,6 +12,42 @@ IMPL_START_0(nop)
|
||||
}
|
||||
IMPL_END;
|
||||
|
||||
IMPL_START_2(and)
|
||||
{
|
||||
v1 &= v2;
|
||||
}
|
||||
IMPL_OUT;
|
||||
|
||||
IMPL_START_2(or)
|
||||
{
|
||||
v1 |= v2;
|
||||
}
|
||||
IMPL_OUT;
|
||||
|
||||
IMPL_START_2(xor)
|
||||
{
|
||||
v1 ^= v2;
|
||||
}
|
||||
IMPL_OUT;
|
||||
|
||||
IMPL_START_2(shl)
|
||||
{
|
||||
v1 <<= v2;
|
||||
}
|
||||
IMPL_OUT;
|
||||
|
||||
IMPL_START_2(shr)
|
||||
{
|
||||
v1 >>= v2;
|
||||
}
|
||||
IMPL_OUT;
|
||||
|
||||
IMPL_START_1(not)
|
||||
{
|
||||
v1 = ~v1;
|
||||
}
|
||||
IMPL_OUT;
|
||||
|
||||
IMPL_START_2(add)
|
||||
{
|
||||
v1 += v2;
|
||||
|
0
instr/jumps.c
Normal file
0
instr/jumps.c
Normal file
@ -26,7 +26,8 @@ ushort fwprog[] = {
|
||||
ushort bget(ctx_t *ctx)
|
||||
{
|
||||
if (addr2real(ctx->r[RIP].val) >= MEMSIZE) {
|
||||
_except(ctx, E_ACC, "Executing out of memory");
|
||||
_except(ctx, E_ACC, "Executing out of memory: 0x%016lX",
|
||||
ctx->r[RIP].val);
|
||||
}
|
||||
|
||||
ushort c = ctx->mp[addr2real(ctx->r[RIP].val)];
|
||||
|
Loading…
Reference in New Issue
Block a user