picolisp

Unnamed repository; edit this file to name it for gitweb.
git clone https://logand.com/git/picolisp.git/
Log | Files | Refs | README | LICENSE

commit 7ebaa2914466053a0163345b70a39c79fdd74fda
parent bf70e916287fc92cdce94b680925bf9788ed8821
Author: Alexander Burger <abu@software-lab.de>
Date:   Wed, 31 Oct 2012 18:34:20 +0100

emu64 continued
Diffstat:
Msrc64/arch/emu.l | 34+++++++++++++++++++++++++++-------
1 file changed, 27 insertions(+), 7 deletions(-)

diff --git a/src64/arch/emu.l b/src64/arch/emu.l @@ -692,21 +692,38 @@ "else if (isnan(A.d) || isinf(A.d) == -1 || A.d < (double)-0xFFFFFFFFFFFFFFF)" " E.p = @2;" "else if (A.d >= 0)" - " E.n = (uint64_t)A.d << 4 | 2;" + " E.n = (uint64_t)(A.d + 0.5) << 4 | 2;" "else" - " E.n = (uint64_t)-A.d << 4 | 10;" ) ) + " E.n = (uint64_t)(0.5 - A.d) << 4 | 10;" ) ) (asm float () - (genCode NIL '(float) ((directExpr "TSym") (directExpr "Nil")) - #{!}# ) ) + (genCode NIL '(float) ((directExpr "Nil")) + "if (A.b[0] & 8) {" + " if (((ptr)X.p)->n & 2) {" + " tmp.f = (float)(((ptr)X.p)->n >> 4) / (float)(A.n >> 4);" + " if (((ptr)X.p)->n & 8)" + " tmp.f = -tmp.f;" + " }" + " else" + " tmp.f = X.p == @1? -INFINITY : INFINITY;" + "}" + "else {" + " if (((ptr)X.p)->n & 2) {" + " tmp.d = (double)(((ptr)X.p)->n >> 4) / (double)(A.n >> 4);" + " if (((ptr)X.p)->n & 8)" + " tmp.d = -tmp.d;" + " }" + " else" + " tmp.d = X.p == @1? -INFINITY : INFINITY;" + "}" ) ) (asm std () (genCode NIL '(std) NIL - "*(double*)Z.p = A.d;" ) ) + "*(double*)Z.p = tmp.d;" ) ) (asm stf () (genCode NIL '(stf) NIL - "*(float*)Z.p = A.f;" ) ) + "*(float*)Z.p = tmp.f;" ) ) # C-Calls (de *C-Params # Function return value and parameters @@ -923,7 +940,10 @@ (for N 6 (link "else if ((tmp.p += 16) == @2.p) {") (_natCC 0 N) - (link "}") ) ) ) ) ) ) + (link "}") ) + (link + "else" + " A.n = (*(uint64_t (*)(long,long,long,long,long,long,long,long))Y.p)(((ptr)(S.p + 8))->n, ((ptr)(S.p + 24))->n, ((ptr)(S.p + 40))->n, ((ptr)(S.p + 56))->n, ((ptr)(S.p + 72))->n, ((ptr)(S.p + 88))->n, ((ptr)(S.p + 104))->n, ((ptr)(S.p + 120))->n);" ) ) ) ) ) ) (asm begin ())