factor/library/compiler/x86/alien.factor

55 lines
1.1 KiB
Factor
Raw Normal View History

2005-04-23 19:34:06 -04:00
! Copyright (C) 2005 Slava Pestov.
! See http://factor.sf.net/license.txt for BSD license.
IN: compiler
USING: alien assembler inference kernel kernel-internals lists
math memory namespaces words ;
\ alien-invoke [
uncons load-library compile-c-call
2005-04-23 19:34:06 -04:00
] "generator" set-word-prop
\ alien-global [
2005-05-05 03:12:37 -04:00
uncons load-library 2dup dlsym EAX swap unit MOV f rel-dlsym
2005-04-23 19:34:06 -04:00
] "generator" set-word-prop
#parameters [
drop
] "generator" set-word-prop
: UNBOX cdr dup f dlsym CALL f t rel-dlsym ;
2005-04-23 19:34:06 -04:00
#unbox [
UNBOX EAX PUSH
] "generator" set-word-prop
#unbox-float [
UNBOX ESP 4 SUB [ ESP ] FSTPS
] "generator" set-word-prop
#unbox-double [
UNBOX ESP 8 SUB [ ESP ] FSTPL
2005-04-23 19:34:06 -04:00
] "generator" set-word-prop
#parameter [
#! x86 does not pass parameters in registers
drop
] "generator" set-word-prop
: BOX dup f dlsym CALL f t rel-dlsym EAX POP ;
2005-04-23 19:34:06 -04:00
#box [
EAX PUSH BOX
] "generator" set-word-prop
#box-float [
ESP 4 SUB [ ESP ] FSTPS BOX
] "generator" set-word-prop
#box-double [
ESP 8 SUB [ ESP ] FSTPL BOX ECX POP
2005-04-23 19:34:06 -04:00
] "generator" set-word-prop
#cleanup [
dup 0 = [ drop ] [ ESP swap ADD ] ifte
] "generator" set-word-prop