kvisc/vm/in/INSTRS

133 lines
1.2 KiB
Plaintext

# The OS/K Team licenses this file to you under the MIT license.
# See the LICENSE file in the project root for more information.
stop
nop
#
# Logical instructions
#
!not rm
!and rm rim
!or rm rim
!xor rm rim
!shl rm rim
!shr rm rim
#
# Unsigned arithmetic instructions
#
!inc rm
!dec rm
!add rm rim
!sub rm rim
!mul rm rim
!div rm rim
!mod rm rim
!sgn rm rim
# rdx = hi(rax * $0)
# rax = lo(rax * $0)
!mul2 rim
# rdx = rax % $0
# rax = rax / $0
!div2 rim
#
# Comparison instruction
#
cmp rim rim
cmpb rim rim
cmpw rim rim
cmpl rim rim
cmpt rim rim
test rim rim
testb rim rim
testw rim rim
testl rim rim
testt rim rim
#
# Jump instructions
#
!jmp ri
jcxz ri
jcxnz ri
!loop ri
#
# Movement instructions
#
!lea rm m
!mov rm rim
!xchg rm rim
!cmpxchg rm rim
!movb rm rim
!movw rm rim
!movl rm rim
!movt rm rim
#
# Stack manipulation instructions
#
!push rim
!call rim
!pop rm
!ret
# push rbp
# mov rbp, rsp
enter
# add rsp, 8
# mov rbp, [rsp]
!leave
pushf
popf
#
# Supervisor only instructions
#
cli
sti
devctl rim rim
iocall rim rim
#
# Misc. instructions
#
# Clear rax...rsi
clr
# Clear ax0...ax7
cla
# Clear nx0...nx7
cln
# Print a character on the screen
prn rim
#
# Debugging instructions
#
!break
step rim