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
|
2005-12-03 16:13:09 -05:00
|
|
|
USING: assembler compiler errors kernel kernel-internals math
|
|
|
|
memory words ;
|
2005-05-24 01:26:45 -04:00
|
|
|
|
2005-12-07 21:46:54 -05:00
|
|
|
M: ds-loc v>operand ds-loc-n cell * neg 14 swap ;
|
|
|
|
M: cs-loc v>operand cs-loc-n cell * neg 15 swap ;
|
2005-05-24 01:26:45 -04:00
|
|
|
|
|
|
|
M: %immediate generate-node ( vop -- )
|
2005-12-07 21:46:54 -05:00
|
|
|
drop 0 input address 0 output-operand LOAD ;
|
2005-05-24 01:26:45 -04:00
|
|
|
|
2005-06-01 14:06:25 -04:00
|
|
|
: load-indirect ( dest literal -- )
|
2005-11-04 20:19:15 -05:00
|
|
|
add-literal over LOAD32 0 1 rel-address dup 0 LWZ ;
|
2005-06-01 14:06:25 -04:00
|
|
|
|
2005-05-24 01:26:45 -04:00
|
|
|
M: %indirect generate-node ( vop -- )
|
2005-12-07 21:46:54 -05:00
|
|
|
drop 0 output-operand 0 input load-indirect ;
|
2005-05-24 01:26:45 -04:00
|
|
|
|
2005-09-23 18:41:26 -04:00
|
|
|
M: %peek generate-node ( vop -- )
|
2005-12-07 21:46:54 -05:00
|
|
|
drop dest/src LWZ ;
|
2005-05-24 01:26:45 -04:00
|
|
|
|
2005-09-23 18:41:26 -04:00
|
|
|
M: %replace generate-node ( vop -- )
|
2005-12-07 21:46:54 -05:00
|
|
|
drop dest/src swap STW ;
|
2005-05-24 01:26:45 -04:00
|
|
|
|
|
|
|
M: %inc-d generate-node ( vop -- )
|
2005-12-07 21:46:54 -05:00
|
|
|
drop 14 14 0 input cell * ADDI ;
|
2005-05-24 01:26:45 -04:00
|
|
|
|
|
|
|
M: %inc-r generate-node ( vop -- )
|
2005-12-07 21:46:54 -05:00
|
|
|
drop 15 15 0 input cell * ADDI ;
|