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
|
mov ax1, .msg
|
||||||
call strcmp
|
call strcmp
|
||||||
|
|
||||||
|
movt rax, rbx
|
||||||
|
|
||||||
leave
|
leave
|
||||||
ret
|
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/strrev.k"
|
||||||
include "str/strcpy.k"
|
include "str/strcpy.k"
|
||||||
include "str/strcmp.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
|
# Movement instructions
|
||||||
#
|
#
|
||||||
|
|
||||||
|
<<<<<<< Updated upstream
|
||||||
lea rm m
|
lea rm m
|
||||||
mov rm rim
|
mov rm rim
|
||||||
xchg rm rim
|
xchg rm rim
|
||||||
@ -121,6 +122,128 @@ cleanz rm m
|
|||||||
cmovnz rm rim
|
cmovnz rm rim
|
||||||
cxchgnz rm rim
|
cxchgnz rm rim
|
||||||
ccmpxchgnz 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
|
# Stack manipulation instructions
|
||||||
|
@ -4,11 +4,22 @@
|
|||||||
#include "instrs.h"
|
#include "instrs.h"
|
||||||
#include "arch_i.h"
|
#include "arch_i.h"
|
||||||
|
|
||||||
IMPL_COND(mov);
|
|
||||||
IMPL_COND(lea);
|
IMPL_COND(lea);
|
||||||
|
IMPL_COND(mov);
|
||||||
|
IMPL_COND(movb);
|
||||||
|
IMPL_COND(movw);
|
||||||
|
IMPL_COND(movl);
|
||||||
|
IMPL_COND(movt);
|
||||||
IMPL_COND(xchg);
|
IMPL_COND(xchg);
|
||||||
IMPL_COND(cmpxchg);
|
IMPL_COND(cmpxchg);
|
||||||
|
|
||||||
|
/*
|
||||||
|
IMPL_COND(xchgb);
|
||||||
|
IMPL_COND(xchgw);
|
||||||
|
IMPL_COND(xchgl);
|
||||||
|
IMPL_COND(xchgt);
|
||||||
|
*/
|
||||||
|
|
||||||
//
|
//
|
||||||
// Movement instructions
|
// Movement instructions
|
||||||
//
|
//
|
||||||
@ -19,6 +30,34 @@ IMPL_START_2(mov)
|
|||||||
}
|
}
|
||||||
IMPL_OUT;
|
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)
|
IMPL_START_2(xchg)
|
||||||
{
|
{
|
||||||
ulong t = v1;
|
ulong t = v1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user