1
0
mirror of https://gitlab.os-k.eu/os-k-team/kvisc.git synced 2023-08-25 14:05:46 +02:00
kvisc/vm/in/ALU

118 lines
1.8 KiB
Plaintext
Raw Normal View History

2019-06-23 12:40:18 +02:00
# The OS/K Team licenses this file to you under the MIT license.
# See the LICENSE file in the project root for more information.
2019-07-17 20:26:03 +02:00
#---------------------------------------------------------------------------#
# Logical instructions #
#---------------------------------------------------------------------------#
#
# Bitwise OR operation
#
# $dest = $src1 OR $src2
#
2019-08-08 18:39:12 +02:00
or 2
2019-08-03 17:41:44 +02:00
or 3
2019-07-17 20:26:03 +02:00
#
# Bitwise AND operation
#
# $dest = $src1 AND $src2
#
2019-08-08 18:39:12 +02:00
and 2
2019-08-03 17:41:44 +02:00
and 3
2019-07-17 20:26:03 +02:00
#
# Bitwise XOR operation
#
# $dest = $src1 XOR $src2
#
2019-08-08 18:39:12 +02:00
xor 2
2019-08-03 17:41:44 +02:00
xor 3
2019-07-17 20:26:03 +02:00
#
# Logical left/right shift (SHL/SHR)
#
# $dest = $src1 << $src2 (SHL)
# $dest = $src1 >> $src2 (SHR)
#
2019-08-08 18:39:12 +02:00
shl 2
2019-08-03 17:41:44 +02:00
shl 3
2019-08-08 18:39:12 +02:00
shr 2
2019-08-03 17:41:44 +02:00
shr 3
2019-07-17 20:26:03 +02:00
#
2019-08-06 14:42:31 +02:00
# Arithmetical right shift (SAR)
2019-07-17 20:26:03 +02:00
#
# $dest = $src1 >>> $src2 (SAR)
#
2019-08-08 18:39:12 +02:00
sar 2
2019-08-03 17:41:44 +02:00
sar 3
2019-07-17 20:26:03 +02:00
2019-06-23 12:40:18 +02:00
#---------------------------------------------------------------------------#
# Arithmetic instructions #
#---------------------------------------------------------------------------#
#
# Arithmetical ADD operation
#
2019-07-04 20:33:49 +02:00
# $dest1 = $src1 + $src2
2019-06-23 12:40:18 +02:00
#
2019-08-08 18:39:12 +02:00
add 2
2019-08-03 17:41:44 +02:00
add 3
2019-06-23 12:40:18 +02:00
#
2019-07-04 20:33:49 +02:00
# Arithmetical SUB operation
2019-06-23 12:40:18 +02:00
#
2019-07-04 20:33:49 +02:00
# $dest = $src1 - $src2
2019-06-23 12:40:18 +02:00
#
2019-08-08 18:39:12 +02:00
sub 2
2019-08-03 17:41:44 +02:00
sub 3
2019-06-23 12:40:18 +02:00
#
2019-07-18 22:49:31 +02:00
# Arithmetical MUL operation
2019-06-23 12:40:18 +02:00
#
2019-07-04 20:33:49 +02:00
# $dest = LO($src1 * $src2)
2019-06-23 12:40:18 +02:00
#
2019-08-08 18:39:12 +02:00
mul 2
2019-08-03 17:41:44 +02:00
mul 3
2019-06-23 12:40:18 +02:00
2019-07-04 20:33:49 +02:00
# Arithmetical unsigned MUL operation
2019-06-23 12:40:18 +02:00
#
2019-07-04 20:33:49 +02:00
# $dest1 = HI($dest2 * $src)
# $dest2 = LO($dest2 * $src)
2019-06-23 12:40:18 +02:00
#
2019-08-03 17:41:44 +02:00
mulhi 3
2019-06-23 12:40:18 +02:00
2019-07-18 22:49:31 +02:00
# Arithmetical signed MUL operation
#
# $dest1 = HI($dest2 ** $src)
# $dest2 = LO($dest2 ** $src)
#
2019-08-03 17:41:44 +02:00
imulhi 3
2019-07-18 22:49:31 +02:00
2019-06-23 12:40:18 +02:00
#
2019-07-04 18:41:05 +02:00
# Arithmetical unsigned DIV operation
2019-06-23 12:40:18 +02:00
#
2019-07-18 22:49:31 +02:00
# $dest = $src1 DIV $src2
2019-06-23 12:40:18 +02:00
#
2019-07-04 18:41:05 +02:00
# Preserves all flags
2019-06-23 12:40:18 +02:00
#
2019-08-08 18:39:12 +02:00
div 2
2019-08-03 17:41:44 +02:00
div 3
2019-06-23 12:40:18 +02:00
#
2019-07-18 22:49:31 +02:00
# Arithmetical signed DIV operation
#
# $dest = $src1 IDIV $src2
#
2019-08-08 18:39:12 +02:00
idiv 2
2019-08-03 17:41:44 +02:00
idiv 3
2019-07-18 22:49:31 +02:00
#
# Arithmetical modulo operation (REM)
2019-06-23 12:40:18 +02:00
#
2019-07-18 22:49:31 +02:00
# $dest = $src1 MOD $src2
2019-06-23 12:40:18 +02:00
#
2019-08-08 18:39:12 +02:00
rem 2
2019-08-03 17:41:44 +02:00
rem 3
2019-06-23 12:40:18 +02:00