1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2024-06-10 17:29:29 +00:00
PLASMA/src/scripts/int32.4th
2024-01-08 05:33:03 -08:00

47 lines
2.0 KiB
Forth

' DVAR ENDSRC ( Avoid multiple loads )
" INT32" LOADMOD" "
LOOKUP ZERO32 PLASMA ZERO32 ( -- )
LOOKUP ZEXT16TO32 PLASMA ZEXT32 ( -- )
LOOKUP NEG32 PLASMA NEG32 ( -- )
LOOKUP LOAD32 PLASMA LOAD32 ( i32ptr -- )
LOOKUP LOADI16 PLASMA LOAD16 ( imm16 -- )
LOOKUP STORE32 PLASMA STORE32 ( i32ptr -- )
LOOKUP ADD32 PLASMA ADD32 ( i32ptr -- )
LOOKUP ADDI16 PLASMA ADD16 ( imm16 -- )
LOOKUP SUB32 PLASMA SUB32 ( i32ptr -- )
LOOKUP SUBI16 PLASMA SUB16 ( imm16 -- )
LOOKUP SHL32 PLASMA SHL32 ( imm8 -- )
LOOKUP SHR32 PLASMA SHR32 ( imm8 -- )
LOOKUP MUL32 PLASMA MUL32 ( i32ptr -- )
LOOKUP MULI16 PLASMA MUL16 ( imm16 -- )
LOOKUP DIV32 PLASMA DIV32 ( i32ptr -- rem32 )
LOOKUP DIVI16 PLASMA DIV16 ( imm16 -- rem32 )
LOOKUP ISEQ32 PLASMA ISEQ32 ( i32ptr -- f)
LOOKUP ISEQI16 PLASMA ISEQ16 ( imm16 -- f)
LOOKUP IDGE32 PLASMA ISGE32 ( i32ptr -- f)
LOOKUP ISGEI16 PLASMA ISGE16 ( imm16 -- f)
LOOKUP ISLE32 PLASMA ISLE32 ( i32ptr -- f)
LOOKUP ISLEI16 PLASMA ISLE16 ( imm16 -- f)
LOOKUP ISGT32 PLASMA ISGT32 ( i32ptr -- f)
LOOKUP ISGTI16 PLASMA ISGT16 ( imm16 -- f)
LOOKUP ISLT32 PLASMA ISLT32 ( i32ptr -- f)
LOOKUP ISLTI16 PLASMA ISLT16 ( imm16 -- f )
LOOKUP I32TOS PLASMA I32TOS ( i32ptr strptr -- strptr )
LOOKUP PUTI32 PLASMA PUTI32 ( i32ptr -- )
: DVAR CREATE 4 ALLOT ;
DVAR _DOP1
DVAR _DOP2
: D@ DUP @ SWAP 2+ @ ;
: D! DUP ROT SWAP 2+ ! ! ;
: D+ _DOP2 D! _DOP1 D! _DOP1 LOAD32 _DOP2 ADD32 _DOP1 STORE32 _DOP1 D@ ;
: D- _DOP2 D! _DOP1 D! _DOP1 LOAD32 _DOP2 SUB32 _DOP1 STORE32 _DOP1 D@ ;
: D* _DOP2 D! _DOP1 D! _DOP1 LOAD32 _DOP2 MUL32 _DOP1 STORE32 _DOP1 D@ ;
: D/ _DOP2 D! _DOP1 D! _DOP1 LOAD32 _DOP2 DIV32 _DOP1 STORE32 _DOP1 D@ ;
: D< _DOP2 D! _DOP1 D! _DOP1 LOAD32 _DOP2 ISLT32 ;
: D> _DOP2 D! _DOP1 D! _DOP1 LOAD32 _DOP2 ISGT32 ;
: D= _DOP2 D! _DOP1 D! _DOP1 LOAD32 _DOP2 ISEQ32 ;
: D0= OR 0= ;
: D. _DOP1 D! _DOP1 PUTI32 SPACE ;