翻译:In threaded-code interpreters for Forth, and espe- cially in simple inline-expanding native-code com- pilers a significant part of the run-time is consumed by loading stack items from and storing them to memory, and by stack pointer updates. A frequent technique for reducing that overhead is to keep the top-of-stack in a register. Stack caching [Ert95] is a generalization of this technique. In the past we have presented data based on sim- ulations [Ert95], and timing data with restricted forms of stack caching: Gforth was only able to per- form single-state stack caching with one register, and static stack caching with the canonical state containing 0 or 1 registers [EG04]. In this paper, we describe how we lifted these restrictions (Section 3), and present empirical re- sults, including timing results for several different machines (Section 4).
时间: 2024-02-29 09:56:07 浏览: 116
在Forth的线程代码解释器中,特别是在简单的内联扩展本地代码编译器中,运行时的重要部分都被用于从内存中加载栈项和将其存储到内存中,以及栈指针的更新。减少这种开销的常见技术是将栈顶保留在寄存器中。栈缓存[Ert95]是这种技术的一种推广。过去,我们根据模拟[Ert95]和受限形式的栈缓存的计时数据进行了数据呈现:Gforth只能使用一个寄存器执行单状态栈缓存,并且静态栈缓存具有包含0或1个寄存器的规范状态[EG04]。在本文中,我们描述了如何解除这些限制(第3节),并呈现了经验结果,包括针对几种不同机器的计时结果(第4节)。
相关问题
移植curl但是zlib无法使能,如何解决该问题 Host setup: arm-unknown-linux-gnueabihf Install prefix: /opt/rootfs/curl-7.79.0/curl-7.79.0/_install Compiler: arm-linux-gnueabihf-gcc CFLAGS: -Werror-implicit-function-declaration -O2 -Wno-system-headers -pthread CPPFLAGS: -isystem /opt/rootfs/openssl-1.1.1/openssl-1.1.1/_install/include LDFLAGS: -L/opt/rootfs/openssl-1.1.1/openssl-1.1.1/_install/lib LIBS: -lssl -lcrypto -ldl -lpthread curl version: 7.79.0 SSL: enabled (OpenSSL) SSH: no (--with-{libssh,libssh2}) zlib: no (--with-zlib) brotli: no (--with-brotli) zstd: no (--with-zstd) GSS-API: no (--with-gssapi) GSASL: no (libgsasl not found) TLS-SRP: enabled resolver: POSIX threaded IPv6: enabled Unix sockets: enabled IDN: no (--with-{libidn2,winidn}) Build libcurl: Shared=yes, Static=yes Built-in manual: enabled --libcurl option: enabled (--disable-libcurl-option) Verbose errors: enabled (--disable-verbose) Code coverage: disabled SSPI: no (--enable-sspi) ca cert bundle: no ca cert path: no ca fallback: no LDAP: no (--enable-ldap / --with-ldap-lib / --with-lber-lib) LDAPS: no (--enable-ldaps) RTSP: enabled RTMP: no (--with-librtmp) PSL: no (libpsl not found) Alt-svc: enabled (--disable-alt-svc) HSTS: enabled (--disable-hsts) HTTP1: enabled (internal) HTTP2: no (--with-nghttp2, --with-hyper) HTTP3: no (--with-ngtcp2, --with-quiche) ECH: no (--enable-ech) Protocols: DICT FILE FTP FTPS GOPHER GOPHERS HTTP HTTPS IMAP IMAPS MQTT POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP Features: AsynchDNS HSTS HTTPS-proxy IPv6 Largefile NTLM NTLM_WB SSL TLS-SRP UnixSockets alt-svc
根据你提供的信息,发现curl编译时未启用zlib支持。可以尝试用以下方式解决该问题:
1. 确认已经安装了zlib库和头文件。
2. 在编译curl时,添加 --with-zlib 选项启用zlib支持。如:
```
./configure --with-zlib=/path/to/zlib
```
其中 /path/to/zlib 是 zlib 库的安装路径。
3. 如果上述方法仍然无法解决问题,可以尝试手动设置 CPPFLAGS 和 LDFLAGS 变量,指定 zlib 头文件和库的路径。如:
```
export CPPFLAGS="-I/path/to/zlib/include"
export LDFLAGS="-L/path/to/zlib/lib"
./configure
```
如果仍然无法解决问题,可以尝试升级或重新编译 zlib 库。
阅读全文