1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: math sequences kernel cpu.architecture
4 compiler.cfg.instructions compiler.cfg.registers
6 IN: compiler.cfg.stacks
12 D 0 ^^peek -1 ##inc-d ;
15 1 ##inc-d D 0 ##replace ;
17 : ds-load ( n -- vregs )
20 [ [ <reversed> [ <ds-loc> ^^peek ] map ] [ neg ##inc-d ] bi ] if ;
22 : ds-store ( vregs -- )
26 [ [ <ds-loc> ##replace ] each-index ] bi
29 : rs-load ( n -- vregs )
32 [ [ <reversed> [ <rs-loc> ^^peek ] map ] [ neg ##inc-r ] bi ] if ;
34 : rs-store ( vregs -- )
38 [ [ <rs-loc> ##replace ] each-index ] bi
41 : 2inputs ( -- vreg1 vreg2 )
42 D 1 ^^peek D 0 ^^peek -2 ##inc-d ;
44 : 3inputs ( -- vreg1 vreg2 vreg3 )
45 D 2 ^^peek D 1 ^^peek D 0 ^^peek -3 ##inc-d ;