2005-03-13 17:55:57 -05:00
|
|
|
! Copyright (C) 2005 Slava Pestov.
|
|
|
|
! See http://factor.sf.net/license.txt for BSD license.
|
|
|
|
IN: assembler
|
2005-03-14 13:20:57 -05:00
|
|
|
USING: compiler errors kernel math memory words ;
|
2005-03-13 17:55:57 -05:00
|
|
|
|
2005-03-14 13:20:57 -05:00
|
|
|
! Pushing and popping the data stack.
|
|
|
|
: PEEK-DS 18 14 0 LWZ ;
|
|
|
|
: POP-DS PEEK-DS 14 14 4 SUBI ;
|
|
|
|
: PUSH-DS 18 14 4 STWU ;
|
|
|
|
: REPL-DS 18 14 0 STW ;
|
|
|
|
|
|
|
|
! Pushing and popping the return stack.
|
|
|
|
: PEEK-CS 18 15 0 LWZ ;
|
|
|
|
: POP-CS PEEK-CS 15 15 4 SUBI ;
|
|
|
|
: PUSH-CS 18 15 4 STWU ;
|
2005-03-13 17:55:57 -05:00
|
|
|
|
2005-03-19 20:37:25 -05:00
|
|
|
: indirect-literal ( obj -- )
|
|
|
|
intern-literal 19 LOAD
|
|
|
|
18 19 0 LWZ ;
|
|
|
|
|
2005-03-14 13:20:57 -05:00
|
|
|
#push-immediate [
|
2005-03-17 23:29:08 -05:00
|
|
|
address 18 LOAD PUSH-DS
|
2005-03-14 13:20:57 -05:00
|
|
|
] "generator" set-word-prop
|
|
|
|
|
2005-03-19 20:37:25 -05:00
|
|
|
#push-indirect [
|
|
|
|
indirect-literal PUSH-DS
|
|
|
|
] "generator" set-word-prop
|
|
|
|
|
2005-03-14 13:20:57 -05:00
|
|
|
#replace-immediate [
|
2005-03-17 23:29:08 -05:00
|
|
|
address 18 LOAD REPL-DS
|
2005-03-14 13:20:57 -05:00
|
|
|
] "generator" set-word-prop
|
2005-03-13 17:55:57 -05:00
|
|
|
|
2005-03-19 20:37:25 -05:00
|
|
|
#replace-indirect [
|
|
|
|
indirect-literal REPL-DS
|
|
|
|
] "generator" set-word-prop
|
|
|
|
|
2005-03-14 13:20:57 -05:00
|
|
|
\ drop [ drop 14 14 4 SUBI ] "generator" set-word-prop
|
|
|
|
\ dup [ drop PEEK-DS PUSH-DS ] "generator" set-word-prop
|
|
|
|
\ over [ drop 18 14 -4 LWZ PUSH-DS ] "generator" set-word-prop
|
|
|
|
\ pick [ drop 18 14 -8 LWZ PUSH-DS ] "generator" set-word-prop
|
2005-03-14 20:09:32 -05:00
|
|
|
|
|
|
|
\ swap [
|
|
|
|
drop
|
|
|
|
18 14 -4 LWZ
|
|
|
|
19 14 0 LWZ
|
|
|
|
19 14 -4 STW
|
|
|
|
18 14 0 STW
|
|
|
|
] "generator" set-word-prop
|
|
|
|
|
2005-03-14 13:20:57 -05:00
|
|
|
\ >r [ drop POP-DS PUSH-CS ] "generator" set-word-prop
|
|
|
|
\ r> [ drop POP-CS PUSH-DS ] "generator" set-word-prop
|