factor/library/compiler/ppc/stack.factor

40 lines
1.0 KiB
Factor
Raw Normal View History

2005-03-13 17:55:57 -05:00
! Copyright (C) 2005 Slava Pestov.
! See http://factor.sf.net/license.txt for BSD license.
IN: compiler
USING: assembler errors kernel kernel-internals math
memory namespaces words ;
2005-12-09 00:02:41 -05:00
GENERIC: loc>operand
M: ds-loc loc>operand ds-loc-n cells neg 14 swap ;
M: cs-loc loc>operand cs-loc-n cells neg 15 swap ;
2006-04-11 02:45:24 -04:00
: %literal ( quot -- )
0 output vreg? [
0 input 0 output-operand rot call
] [
0 input 11 rot call
11 0 output loc>operand STW
] if ; inline
M: %immediate generate-node ( vop -- )
2006-04-11 02:45:24 -04:00
drop [ >r address r> LOAD ] %literal ;
: load-indirect ( dest literal -- )
2005-12-11 15:14:41 -05:00
add-literal over LOAD32 rel-2/2 rel-address dup 0 LWZ ;
M: %indirect generate-node ( vop -- )
2006-04-11 02:45:24 -04:00
drop [ swap load-indirect ] %literal ;
M: %peek generate-node ( vop -- )
2005-12-09 00:02:41 -05:00
drop 0 output-operand 0 input loc>operand LWZ ;
M: %replace generate-node ( vop -- )
2005-12-09 00:02:41 -05:00
drop 0 input-operand 0 output loc>operand STW ;
M: %inc-d generate-node ( vop -- )
2005-12-14 20:29:32 -05:00
drop 14 14 0 input cells ADDI ;
M: %inc-r generate-node ( vop -- )
2005-12-14 20:29:32 -05:00
drop 15 15 0 input cells ADDI ;