;
; Исходный код среды исполнения ПВТ-ОО.
;
; Этот исходный код является частью проекта ПВТ-ОО.
;
; Copyright © 2021 Малик Разработчик
;
; Это свободная программа: вы можете перераспространять её и/или
; изменять её на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
; в каком она была опубликована Фондом свободного программного обеспечения;
; либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
;
; Эта программа распространяется в надежде, что она может быть полезна,
; но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
; или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
; общественной лицензии GNU.
;
; Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
; вместе с этой программой. Если это не так, см.
; <http://www.gnu.org/licenses/>.
;
; <fold avt.lang.Int (natives) >
method avt.lang.Int$signum$int$, \
value, int ; returns int <fold >
menter
lverify value, TAG_INT
cmp dword[.value], $00
jl .L
je .E
.G: mov r0d, $01
jmp @F
.L: mov r0d, -$01
jmp @F
.E: xor r0d, r0d
@@: call inst$ipush
mleaved
eleave
; </fold>
method avt.lang.Int$compare$int$int$, \
value0, int, \
value1, int ; returns int <fold >
menter
lverify value0, TAG_INT
lverify value1, TAG_INT
mov r0d, [.value0]
cmp r0d, [.value1]
jl .L
je .E
.G: mov r0d, $01
jmp @F
.L: mov r0d, -$01
jmp @F
.E: xor r0d, r0d
@@: call inst$ipush
mleaved
eleave
; </fold>
method avt.lang.Int$compareUnsigned$int$int$, \
value0, int, \
value1, int ; returns int <fold >
menter
lverify value0, TAG_INT
lverify value1, TAG_INT
mov r0d, [.value0]
cmp r0d, [.value1]
jb .L
je .E
.G: mov r0d, $01
jmp @F
.L: mov r0d, -$01
jmp @F
.E: xor r0d, r0d
@@: call inst$ipush
mleaved
eleave
; </fold>
method avt.lang.Int$max$int$int$, \
value0, int, \
value1, int ; returns int <fold >
menter
lverify value0, TAG_INT
lverify value1, TAG_INT
mov r0d, [.value0]
mov r1d, [.value1]
cmp r0d, r1d
jge @F
mov r0d, r1d
@@: call inst$ipush
mleaved
eleave
; </fold>
method avt.lang.Int$maxUnsigned$int$int$, \
value0, int, \
value1, int ; returns int <fold >
menter
lverify value0, TAG_INT
lverify value1, TAG_INT
mov r0d, [.value0]
mov r1d, [.value1]
cmp r0d, r1d
jae @F
mov r0d, r1d
@@: call inst$ipush
mleaved
eleave
; </fold>
method avt.lang.Int$min$int$int$, \
value0, int, \
value1, int ; returns int <fold >
menter
lverify value0, TAG_INT
lverify value1, TAG_INT
mov r0d, [.value0]
mov r1d, [.value1]
cmp r0d, r1d
jle @F
mov r0d, r1d
@@: call inst$ipush
mleaved
eleave
; </fold>
method avt.lang.Int$minUnsigned$int$int$, \
value0, int, \
value1, int ; returns int <fold >
menter
lverify value0, TAG_INT
lverify value1, TAG_INT
mov r0d, [.value0]
mov r1d, [.value1]
cmp r0d, r1d
jbe @F
mov r0d, r1d
@@: call inst$ipush
mleaved
eleave
; </fold>
method avt.lang.Int$rotateLeft$int$int$, \
value, int, \
bits, int ; returns int <fold >
menter
lverify value, TAG_INT
lverify bits, TAG_INT
mov r1d, [.bits]
mov r0d, [.value]
rol r0d, r1b
call inst$ipush
mleaved
eleave
; </fold>
method avt.lang.Int$rotateRight$int$int$, \
value, int, \
bits, int ; returns int <fold >
menter
lverify value, TAG_INT
lverify bits, TAG_INT
mov r1d, [.bits]
mov r0d, [.value]
ror r0d, r1b
call inst$ipush
mleaved
eleave
; </fold>
method avt.lang.Int$toByte4Bits$int$, \
value, int ; returns byte4 <fold >
menter
lverify value, TAG_INT
b4load [.value]
mleavex
eleave
; </fold>
method avt.lang.Int$toShort2Bits$int$, \
value, int ; returns short2 <fold >
menter
lverify value, TAG_INT
s2load [.value]
mleavex
eleave
; </fold>
method avt.lang.Int$toFloatBits$int$, \
value, int ; returns float <fold >
menter
lverify value, TAG_INT
fload [.value]
mleavex
eleave
; </fold>
; </fold>