2009-05-06 21:04:49 -04:00
|
|
|
! Copyright (C) 2007, 2009 Slava Pestov.
|
2007-09-21 23:30:47 -04:00
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
|
|
USING: bootstrap.image.private kernel namespaces system
|
2009-07-30 03:22:37 -04:00
|
|
|
layouts vocabs parser compiler.constants math
|
2009-10-28 14:38:27 -04:00
|
|
|
cpu.x86.assembler cpu.x86.assembler.operands sequences ;
|
2007-09-21 23:30:47 -04:00
|
|
|
IN: bootstrap.x86
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
8 \ cell set
|
2007-09-21 23:30:47 -04:00
|
|
|
|
2008-11-03 02:18:35 -05:00
|
|
|
: shift-arg ( -- reg ) RCX ;
|
|
|
|
: div-arg ( -- reg ) RAX ;
|
|
|
|
: mod-arg ( -- reg ) RDX ;
|
2008-12-09 18:14:17 -05:00
|
|
|
: temp0 ( -- reg ) RDI ;
|
|
|
|
: temp1 ( -- reg ) RSI ;
|
|
|
|
: temp2 ( -- reg ) RDX ;
|
|
|
|
: temp3 ( -- reg ) RBX ;
|
2009-10-16 12:39:22 -04:00
|
|
|
: safe-reg ( -- reg ) RAX ;
|
2008-06-11 05:52:19 -04:00
|
|
|
: stack-reg ( -- reg ) RSP ;
|
|
|
|
: ds-reg ( -- reg ) R14 ;
|
2008-07-07 11:39:04 -04:00
|
|
|
: rs-reg ( -- reg ) R15 ;
|
2008-06-11 05:52:19 -04:00
|
|
|
: fixnum>slot@ ( -- ) ;
|
|
|
|
: rex-length ( -- n ) 1 ;
|
2007-09-21 23:30:47 -04:00
|
|
|
|
2008-11-13 04:20:34 -05:00
|
|
|
[
|
2009-04-25 23:35:19 -04:00
|
|
|
! load stack_chain
|
|
|
|
temp0 0 MOV rc-absolute-cell rt-stack-chain jit-rel
|
2008-12-09 18:14:17 -05:00
|
|
|
temp0 temp0 [] MOV
|
2009-04-25 23:35:19 -04:00
|
|
|
! save stack pointer
|
|
|
|
temp0 [] stack-reg MOV
|
2009-09-07 02:15:10 -04:00
|
|
|
! load vm ptr
|
2009-09-23 14:45:18 -04:00
|
|
|
arg1 0 MOV rc-absolute-cell rt-vm jit-rel
|
2009-10-14 20:24:23 -04:00
|
|
|
! load XT
|
|
|
|
temp1 0 MOV rc-absolute-cell rt-primitive jit-rel
|
2009-04-25 23:35:19 -04:00
|
|
|
! go
|
|
|
|
temp1 JMP
|
|
|
|
] jit-primitive jit-define
|
2008-11-13 04:20:34 -05:00
|
|
|
|
2009-10-28 14:38:27 -04:00
|
|
|
<< "vocab:cpu/x86/bootstrap.factor" parse-file suffix! >>
|
2008-01-26 22:47:52 -05:00
|
|
|
call
|