mirror of
https://gitlab.os-k.eu/os-k-team/kvisc.git
synced 2023-08-25 14:05:46 +02:00
mov.c, INSTRS
This commit is contained in:
parent
60ec34d0fc
commit
5d12d66d17
@ -28,6 +28,8 @@ main:
|
||||
mov ax1, .msg
|
||||
call strcmp
|
||||
|
||||
movt rax, rbx
|
||||
|
||||
leave
|
||||
ret
|
||||
|
||||
|
18
dos/str/strchr.k
Normal file
18
dos/str/strchr.k
Normal file
@ -0,0 +1,18 @@
|
||||
; The OS/K Team licenses this file to you under the MIT license.
|
||||
; See the LICENSE file in the project root for more information.
|
||||
|
||||
;
|
||||
; char *strchrnul(const char *str, int ch)
|
||||
;
|
||||
strchrnul:
|
||||
|
||||
ret
|
||||
|
||||
;
|
||||
; char *strchr(const char *str, int ch)
|
||||
;
|
||||
strchr:
|
||||
call strchrnul
|
||||
test b[rax], b[rax]
|
||||
cmovz rax, 0
|
||||
ret
|
@ -5,4 +5,5 @@ include "str/strlen.k"
|
||||
include "str/strrev.k"
|
||||
include "str/strcpy.k"
|
||||
include "str/strcmp.k"
|
||||
include "str/strchr.k"
|
||||
|
||||
|
123
pc/instrs/INSTRS
123
pc/instrs/INSTRS
@ -107,6 +107,7 @@ cloopnz ri
|
||||
# Movement instructions
|
||||
#
|
||||
|
||||
<<<<<<< Updated upstream
|
||||
lea rm m
|
||||
mov rm rim
|
||||
xchg rm rim
|
||||
@ -121,6 +122,128 @@ cleanz rm m
|
||||
cmovnz rm rim
|
||||
cxchgnz rm rim
|
||||
ccmpxchgnz rm rim
|
||||
=======
|
||||
mov r r
|
||||
mov r i
|
||||
mov r m
|
||||
mov m r
|
||||
mov m i
|
||||
mov m m
|
||||
cmovz r r
|
||||
cmovz r i
|
||||
cmovz r m
|
||||
cmovz m r
|
||||
cmovz m i
|
||||
cmovz m m
|
||||
cmovnz r r
|
||||
cmovnz r i
|
||||
cmovnz r m
|
||||
cmovnz m r
|
||||
cmovnz m i
|
||||
cmovnz m m
|
||||
|
||||
movb r r
|
||||
movb r i
|
||||
movb r m
|
||||
movb m r
|
||||
movb m i
|
||||
movb m m
|
||||
cmovbz r r
|
||||
cmovbz r i
|
||||
cmovbz r m
|
||||
cmovbz m r
|
||||
cmovbz m i
|
||||
cmovbz m m
|
||||
cmovbnz r r
|
||||
cmovbnz r i
|
||||
cmovbnz r m
|
||||
cmovbnz m r
|
||||
cmovbnz m i
|
||||
cmovbnz m m
|
||||
|
||||
movw r r
|
||||
movw r i
|
||||
movw r m
|
||||
movw m r
|
||||
movw m i
|
||||
movw m m
|
||||
cmovwz r r
|
||||
cmovwz r i
|
||||
cmovwz r m
|
||||
cmovwz m r
|
||||
cmovwz m i
|
||||
cmovwz m m
|
||||
cmovwnz r r
|
||||
cmovwnz r i
|
||||
cmovwnz r m
|
||||
cmovwnz m r
|
||||
cmovwnz m i
|
||||
cmovwnz m m
|
||||
|
||||
movl r r
|
||||
movl r i
|
||||
movl r m
|
||||
movl m r
|
||||
movl m i
|
||||
movl m m
|
||||
cmovlz r r
|
||||
cmovlz r i
|
||||
cmovlz r m
|
||||
cmovlz m r
|
||||
cmovlz m i
|
||||
cmovlz m m
|
||||
cmovlnz r r
|
||||
cmovlnz r i
|
||||
cmovlnz r m
|
||||
cmovlnz m r
|
||||
cmovlnz m i
|
||||
cmovlnz m m
|
||||
|
||||
movt r r
|
||||
movt r i
|
||||
movt r m
|
||||
movt m r
|
||||
movt m i
|
||||
movt m m
|
||||
cmovtz r r
|
||||
cmovtz r i
|
||||
cmovtz r m
|
||||
cmovtz m r
|
||||
cmovtz m i
|
||||
cmovtz m m
|
||||
cmovtnz r r
|
||||
cmovtnz r i
|
||||
cmovtnz r m
|
||||
cmovtnz m r
|
||||
cmovtnz m i
|
||||
cmovtnz m m
|
||||
|
||||
xchg r r
|
||||
xchg r i
|
||||
xchg r m
|
||||
xchg m r
|
||||
xchg m i
|
||||
xchg m m
|
||||
cxchgz r r
|
||||
cxchgz r i
|
||||
cxchgz r m
|
||||
cxchgz m r
|
||||
cxchgz m i
|
||||
cxchgz m m
|
||||
cxchgnz r r
|
||||
cxchgnz r i
|
||||
cxchgnz r m
|
||||
cxchgnz m r
|
||||
cxchgnz m i
|
||||
cxchgnz m m
|
||||
|
||||
lea r m
|
||||
lea m m
|
||||
cleaz r m
|
||||
cleaz m m
|
||||
cleanz r m
|
||||
cleanz m m
|
||||
>>>>>>> Stashed changes
|
||||
|
||||
#
|
||||
# Stack manipulation instructions
|
||||
|
@ -4,11 +4,22 @@
|
||||
#include "instrs.h"
|
||||
#include "arch_i.h"
|
||||
|
||||
IMPL_COND(mov);
|
||||
IMPL_COND(lea);
|
||||
IMPL_COND(mov);
|
||||
IMPL_COND(movb);
|
||||
IMPL_COND(movw);
|
||||
IMPL_COND(movl);
|
||||
IMPL_COND(movt);
|
||||
IMPL_COND(xchg);
|
||||
IMPL_COND(cmpxchg);
|
||||
|
||||
/*
|
||||
IMPL_COND(xchgb);
|
||||
IMPL_COND(xchgw);
|
||||
IMPL_COND(xchgl);
|
||||
IMPL_COND(xchgt);
|
||||
*/
|
||||
|
||||
//
|
||||
// Movement instructions
|
||||
//
|
||||
@ -19,6 +30,34 @@ IMPL_START_2(mov)
|
||||
}
|
||||
IMPL_OUT;
|
||||
|
||||
IMPL_START_2(movb)
|
||||
{
|
||||
v1 = (v1 & 0xFFFFFFFFFFFFFF00)
|
||||
| (v2 & 0x00000000000000FF);
|
||||
}
|
||||
IMPL_OUT;
|
||||
|
||||
IMPL_START_2(movw)
|
||||
{
|
||||
v1 = (v1 & 0xFFFFFFFFFFFF0000)
|
||||
| (v2 & 0x000000000000FFFF);
|
||||
}
|
||||
IMPL_OUT;
|
||||
|
||||
IMPL_START_2(movl)
|
||||
{
|
||||
v1 = (v1 & 0xFFFFFFFF00000000)
|
||||
| (v2 & 0x00000000FFFFFFFF);
|
||||
}
|
||||
IMPL_OUT;
|
||||
|
||||
IMPL_START_2(movt)
|
||||
{
|
||||
v1 = (v1 & 0xFFFF000000000000)
|
||||
| (v2 & 0x0000FFFFFFFFFFFF);
|
||||
}
|
||||
IMPL_OUT;
|
||||
|
||||
IMPL_START_2(xchg)
|
||||
{
|
||||
ulong t = v1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user