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 d1574d9c46293e34e2e0e9788cd00d06e0f30e1c
parent 4c9d3af10b3c75a077b3558ec1faa28df25e62da
Author: Alexander Burger <abu@software-lab.de>
Date:   Sun, 25 Nov 2012 14:20:48 +0100

Emulator stack size argument
Diffstat:
Msrc64/arch/emu.l | 27+++++++++++++++++----------
Msrc64/tags | 126++++---------------------------------------------------------------------------
2 files changed, 23 insertions(+), 130 deletions(-)

diff --git a/src64/arch/emu.l b/src64/arch/emu.l @@ -1,4 +1,4 @@ -# 11nov12abu +# 25nov12abu # (c) Software Lab. Alexander Burger # Byte order @@ -488,10 +488,8 @@ "Carry = (Result = @1 - @2) > MAX64 - @2;" ) ) ((and (= Dst "S") (= Src '(StkLimit))) (genCode (Dst D Src S) (list 'cmp Dst Src) ((op.n Dst D) (op.n Src S)) - "if (S.p < Stack + 4064) {" - " fprintf(stderr, \"Emulator stack overflow\\n\");" - " exit(-99);" - "}" + "if (S.p < Stack + 4064)" + " emuStkErr();" "Carry = (Result = @1 - @2) > MAX64 - @2;" ) ) (T (genCode (Dst D Src S) (list 'cmp Dst Src) ((op.n Dst D) (op.n Src S)) @@ -1192,6 +1190,11 @@ "uint64_t Result;" "int Carry;" NIL + "void emuStkErr(void) {" + " fprintf(stderr, \"Emulator stack error\\n\");" + " exit(-99);" + "}" + NIL "static void run(int);" NIL "void mul2(uint64_t src) {" @@ -1499,16 +1502,20 @@ (quote NIL "int main(int ac, char *av[]) {" - " int i;" + " int i, stk = STACK;" NIL - " S.p = (Stack = malloc(STACK)) + STACK;" " Y.p = malloc((ac + 1) * sizeof(op));" - " i = 0; do" + " i = 0; do {" " ((ptr)Y.p)[i].n = (uint64_t)(unsigned long)av[i];" - " while (++i < ac);" + " if (strtol(av[i], (char**)&S.p, 10) < 0 && *S.p == '\\0')" + " stk = atoi(av[i]+1) * 1024 * 1024;" + " } while (++i < ac);" " ((ptr)Y.p)[i].n = 0;" " X.p = ((ptr)Y.p)->p, Y.p += 8;" - " Z.p = Y.p + (ac - 2) * sizeof(op);" ) ) + " Z.p = Y.p + (ac - 2) * sizeof(op);" + " if ((Stack = malloc(stk)) == NULL)" + " emuStkErr();" + " S.p = Stack + stk;" ) ) (prinl (pack " run(" (absCode "main") ");")) (prinl " return 0;") (prinl "}") ) diff --git a/src64/tags b/src64/tags @@ -48,120 +48,6 @@ CHAR_LETTER63,1499 CHAR_DIGIT64,1520 -sys/x86-64.linux.defs.l,1959 -ENOENT5,59 -EINTR6,108 -EBADF7,155 -EAGAIN8,194 -EACCES9,227 -EPIPE10,268 -ECONNRESET11,303 -O_RDONLY14,365 -O_WRONLY15,382 -O_RDWR16,399 -O_CREAT17,414 -O_EXCL18,431 -O_TRUNC19,448 -O_APPEND20,466 -F_GETFD21,486 -F_SETFD22,502 -FD_CLOEXEC23,518 -BUFSIZ26,546 -PIPE_BUF27,564 -MAXPATHLEN29,585 -RTLD_LAZY32,613 -RTLD_GLOBAL33,631 -FLOCK36,662 -L_TYPE37,702 -L_WHENCE38,722 -L_START39,744 -L_LEN40,760 -L_PID41,775 -SEEK_SET42,790 -SEEK_CUR43,807 -F_RDLCK44,824 -F_WRLCK45,840 -F_UNLCK46,856 -F_GETFL47,872 -F_SETFL48,888 -F_GETLK49,904 -F_SETLK50,920 -F_SETLKW51,936 -F_SETOWN52,953 -O_NONBLOCK53,970 -O_ASYNC54,992 -STAT57,1019 -ST_MODE58,1061 -ST_SIZE59,1083 -ST_MTIME60,1100 -S_IFMT61,1118 -S_IFDIR62,1144 -TMS65,1180 -TMS_UTIME66,1214 -TMS_STIME67,1232 -TERMIOS70,1261 -C_IFLAG71,1304 -C_LFLAG72,1320 -C_CC73,1337 -ISIG74,1351 -VMIN75,1364 -VTIME76,1377 -TCSADRAIN77,1391 -SIGACTION80,1419 -SIGSET_T81,1462 -SA_HANDLER82,1481 -SA_MASK83,1500 -SA_FLAGS84,1516 -SIG_DFL86,1536 -SIG_IGN87,1552 -SIG_UNBLOCK88,1568 -SIGHUP90,1589 -SIGINT91,1615 -SIGUSR192,1630 -SIGUSR293,1647 -SIGPIPE94,1664 -SIGALRM95,1681 -SIGTERM96,1698 -SIGCHLD97,1715 -SIGCONT98,1732 -SIGSTOP99,1749 -SIGTSTP100,1766 -SIGTTIN101,1783 -SIGTTOU102,1800 -SIGIO103,1817 -SIGNALS104,1832 -WNOHANG107,1894 -WUNTRACED108,1910 -FD_SET111,1938 -TM_SEC114,1975 -TM_MIN115,1990 -TM_HOUR116,2005 -TM_MDAY117,2021 -TM_MON118,2038 -TM_YEAR119,2054 -D_NAME122,2078 -SOCK_STREAM125,2105 -SOCK_DGRAM126,2125 -AF_UNSPEC127,2144 -AF_INET6128,2162 -SOL_SOCKET129,2180 -SO_REUSEADDR130,2199 -IPPROTO_IPV6131,2220 -IPV6_V6ONLY132,2242 -INET6_ADDRSTRLEN133,2263 -NI_MAXHOST135,2290 -NI_NAMEREQD136,2312 -SOCKADDR_IN6138,2333 -SIN6_FAMILY139,2355 -SIN6_PORT140,2375 -SIN6_ADDR141,2393 -ADDRINFO143,2412 -AI_FAMILY144,2430 -AI_SOCKTYPE145,2448 -AI_ADDRLEN146,2468 -AI_ADDR147,2488 -AI_NEXT148,2505 - ./glob.l,4297 Data4,51 AV7,77 @@ -1251,9 +1137,9 @@ sys/x86-64.linux.defs.l,1959 getUdpZ_FB370,9724 putUdpBZ377,9869 -sys/x86-64.linux.code.l,94 -errno_A5,67 -errnoC10,169 -wifstoppedS_F16,287 -wifsignaledS_F21,413 -wtermsigS_A28,568 +sys/emu.code.l,95 +errno_A8,134 +errnoC16,260 +wifstoppedS_F24,409 +wifsignaledS_F32,570 +wtermsigS_A40,725