mov.c, INSTRS

This commit is contained in:
julianb0 2019-06-03 15:16:11 +02:00
parent 60ec34d0fc
commit 5d12d66d17
No known key found for this signature in database
GPG Key ID: DDF8325C95299A62
5 changed files with 184 additions and 1 deletions

View File

@ -28,6 +28,8 @@ main:
mov ax1, .msg
call strcmp
movt rax, rbx
leave
ret

18
dos/str/strchr.k Normal file
View 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

View File

@ -5,4 +5,5 @@ include "str/strlen.k"
include "str/strrev.k"
include "str/strcpy.k"
include "str/strcmp.k"
include "str/strchr.k"

View File

@ -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

View File

@ -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;