]> gitweb.factorcode.org Git - factor.git/blob - basis/cpu/x86/32/bootstrap.factor
parsed -> suffix!, add append!
[factor.git] / basis / cpu / x86 / 32 / bootstrap.factor
1 ! Copyright (C) 2007, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: bootstrap.image.private kernel namespaces system
4 cpu.x86.assembler cpu.x86.assembler.operands layouts
5 vocabs parser compiler.constants sequences ;
6 IN: bootstrap.x86
7
8 4 \ cell set
9
10 : stack-frame-size ( -- n ) 4 bootstrap-cells ;
11 : shift-arg ( -- reg ) ECX ;
12 : div-arg ( -- reg ) EAX ;
13 : mod-arg ( -- reg ) EDX ;
14 : arg1 ( -- reg ) EAX ;
15 : arg2 ( -- reg ) EDX ;
16 : temp0 ( -- reg ) EAX ;
17 : temp1 ( -- reg ) EDX ;
18 : temp2 ( -- reg ) ECX ;
19 : temp3 ( -- reg ) EBX ;
20 : safe-reg ( -- reg ) EAX ;
21 : stack-reg ( -- reg ) ESP ;
22 : ds-reg ( -- reg ) ESI ;
23 : rs-reg ( -- reg ) EDI ;
24 : fixnum>slot@ ( -- ) temp0 1 SAR ;
25 : rex-length ( -- n ) 0 ;
26
27 [
28     ! load stack_chain
29     temp0 0 [] MOV rc-absolute-cell rt-stack-chain jit-rel
30     ! save stack pointer
31     temp0 [] stack-reg MOV
32     ! pass vm ptr to primitive
33     arg1 0 MOV rc-absolute-cell rt-vm jit-rel
34     ! call the primitive
35     0 JMP rc-relative rt-primitive jit-rel
36 ] jit-primitive jit-define
37
38 << "vocab:cpu/x86/bootstrap.factor" parse-file suffix! >>
39 call