Hi all, this is now the "Announcement" of the PicoLisp 64-bit Emulator. A little bit late, as we've already discussed about it here in this list.
It emulates the PicoLisp machine as a Large Instruction Set Computer ("LISC" -- as opposed to "RISC", Reduced Instruction Set Computer)). It is similar to a byte-code architecture, but each instruction is not an 8-bit byte, but a 16-bit word. Each word denotes a complete instruction, without exception, not just an opcode which may require further operands. It can be compiled with (see the INSTALL file) $ (cd src64/; make emu) and started as always $ ./pil + The usual prerequisite of a running PicoLisp system for bootstrapping must be met (also see the INSTALL file). It is not perfect. It will currently not compile on 32-bit little-endian systems. This is due to some inconsistency in the C99 spec about the handling of "designated initialization" of anonymous structure members. The speed is lousy. About 10 to 20 times slower than the real thing. So this is in the same range as other emulators like 'qemu'. Another drawback is the fixed stack size (currently 1 M entries (8 MB)). As expected, the implementation of 'native' in plain C posed the biggest problem. There is no way to pass arguments to a C function generically. The emulator uses a brute-force approach, by hard-coding combinations of supported argument types. Therefore, 'native' supports only up to 8 arguments, the first 6 of which might be floats or doubles. Also, if the first argument to a native function is a float or double, then the function's return value should also be a float or double. Calls to 'native' with structures in arguments or return values are naturally non-portable between pil32 and pil64. They will work probably best on 64-bit platforms. Cheers, - Alex -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe