2005-03-13 17:55:57 -05:00
|
|
|
! Copyright (C) 2005 Slava Pestov.
|
|
|
|
! See http://factor.sf.net/license.txt for BSD license.
|
2005-05-24 01:26:45 -04:00
|
|
|
IN: compiler-backend
|
|
|
|
USING: assembler compiler errors kernel math memory words ;
|
|
|
|
|
|
|
|
: ds-op cell * neg 14 swap ;
|
|
|
|
: cs-op cell * neg 15 swap ;
|
|
|
|
|
|
|
|
M: %immediate generate-node ( vop -- )
|
2005-06-09 19:49:31 -04:00
|
|
|
dup vop-in-1 address swap vop-out-1 v>operand LOAD ;
|
2005-05-24 01:26:45 -04:00
|
|
|
|
2005-06-01 14:06:25 -04:00
|
|
|
: load-indirect ( dest literal -- )
|
|
|
|
intern-literal over LOAD dup 0 LWZ ;
|
|
|
|
|
2005-05-24 01:26:45 -04:00
|
|
|
M: %indirect generate-node ( vop -- )
|
2005-06-01 14:06:25 -04:00
|
|
|
dup vop-out-1 v>operand swap vop-in-1 load-indirect ;
|
2005-05-24 01:26:45 -04:00
|
|
|
|
|
|
|
M: %peek-d generate-node ( vop -- )
|
|
|
|
dup vop-out-1 v>operand swap vop-in-1 ds-op LWZ ;
|
|
|
|
|
|
|
|
M: %replace-d generate-node ( vop -- )
|
|
|
|
dup vop-in-2 v>operand swap vop-in-1 ds-op STW ;
|
|
|
|
|
|
|
|
M: %inc-d generate-node ( vop -- )
|
|
|
|
14 14 rot vop-in-1 cell * ADDI ;
|
|
|
|
|
|
|
|
M: %inc-r generate-node ( vop -- )
|
|
|
|
15 15 rot vop-in-1 cell * ADDI ;
|
|
|
|
|
|
|
|
M: %peek-r generate-node ( vop -- )
|
|
|
|
dup vop-out-1 v>operand swap vop-in-1 cs-op LWZ ;
|
|
|
|
|
|
|
|
M: %replace-r generate-node ( vop -- )
|
2005-05-24 19:59:21 -04:00
|
|
|
dup vop-in-2 v>operand swap vop-in-1 cs-op STW ;
|