working on AMD64 overflow checks

cvs
Slava Pestov 2005-12-10 06:27:41 +00:00
parent 8de238eece
commit 0528c5a89c
3 changed files with 8 additions and 7 deletions

View File

@ -1,5 +1,6 @@
IN: compiler-backend IN: compiler-backend
USING: assembler compiler-backend kernel sequences ; USING: alien assembler compiler compiler-backend kernel
sequences ;
! AMD64 register assignments ! AMD64 register assignments
! RAX RCX RDX RSI RDI R8 R9 R10 R11 vregs ! RAX RCX RDX RSI RDI R8 R9 R10 R11 vregs
@ -19,7 +20,8 @@ USING: assembler compiler-backend kernel sequences ;
: param-regs { R9 R8 RCX RDX RSI RDI } ; : param-regs { R9 R8 RCX RDX RSI RDI } ;
DEFER: compile-c-call : compile-c-call ( symbol dll -- )
2dup dlsym 0 scratch swap MOV 0 0 rel-dlsym 0 scratch CALL ;
: compile-c-call* ( symbol dll -- operands ) : compile-c-call* ( symbol dll -- operands )
param-regs swap [ MOV ] 2each compile-c-call ; param-regs swap [ MOV ] 2each compile-c-call ;

View File

@ -1,5 +1,6 @@
IN: compiler-backend IN: compiler-backend
USING: assembler compiler-backend kernel sequences ; USING: alien assembler compiler compiler-backend kernel
sequences ;
! x86 register assignments ! x86 register assignments
! EAX, ECX, EDX vregs ! EAX, ECX, EDX vregs
@ -17,7 +18,8 @@ USING: assembler compiler-backend kernel sequences ;
: vregs { EAX ECX EDX } ; inline : vregs { EAX ECX EDX } ; inline
DEFER: compile-c-call : compile-c-call ( symbol dll -- )
2dup dlsym CALL 1 0 rel-dlsym ;
: compile-c-call* ( symbol dll args -- operands ) : compile-c-call* ( symbol dll args -- operands )
[ [ PUSH ] each compile-c-call ] keep [ [ PUSH ] each compile-c-call ] keep

View File

@ -7,9 +7,6 @@ kernel-internals lists math memory namespaces sequences words ;
! Not used on x86 ! Not used on x86
M: %prologue generate-node drop ; M: %prologue generate-node drop ;
: compile-c-call ( symbol dll -- )
2dup dlsym CALL 1 0 rel-dlsym ;
: (call-label) : (call-label)
label dup postpone-word label dup postpone-word
dup primitive? [ address-operand ] when ; dup primitive? [ address-operand ] when ;