Hi all,
I'm glad to announce that the arm64 port of pil64 is done! :)
To my feeling, the ARMv8 (arm64) architecture is the best match so far
for the PicoLisp VM. It has some terrible quirks though, the worst being
the fact that the hardware stack pointer is crippled, and nearly
unusable on a stack-based machine like the PicoLisp VM. But I could use
another register for that, and the rest of the instruction set is quite
all right.
I have tested only on a Nexus 9 tablet. All unit tests - and many other
tests - passed. It is in the current version (3.1.11.14):
http://software-lab.de/picoLisp.tgz
Like for the other architectures, pre-generated assembly files are
available:
http://software-lab.de/arm64.linux.tgz
containing
arm64.linux.base.s
arm64.linux.ext.s
arm64.linux.ht.s
Assembling and linking them for the Nexus is a bit tricky, I use the NDK
toolchain from Android Studio, basically doing (your setup will differ):
(setq
*NDK "/home/abu/Android/Sdk/ndk-bundle/"
*Toolchain
"toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/"
*ASM "aarch64-linux-android-as"
*GCC "aarch64-linux-android-gcc"
*Sysroot (pack "--sysroot=" *NDK "platforms/android-21/arch-arm64")
*STRIP "aarch64-linux-android-strip" )
(and
(call (pack *NDK *Toolchain *ASM) "-o" "base.o" "arm64.linux.base.s")
(call (pack *NDK *Toolchain *ASM) "-o" "ext.o" "arm64.linux.ext.s")
(call (pack *NDK *Toolchain *ASM) "-o" "ht.o" "arm64.linux.ht.s")
(call (pack *NDK *Toolchain *GCC) *Sysroot "-pie" "-o" "picolisp"
"-rdynamic" "base.o" "-lc" "-lm" "-ldl")
(call (pack *NDK *Toolchain *GCC) *Sysroot "-pie" "-o" "ext" "-shared"
"-export-dynamic" "ext.o")
(call (pack *NDK *Toolchain *GCC) *Sysroot "-pie" "-o" "ht" "-shared"
"-export-dynamic" "ht.o")
(call (pack *NDK *Toolchain *STRIP) "picolisp" "ext" "ht")
(call 'rm "base.o" "ext.o" "ht.o") )
Then I use 'adb push' to copy the binary and Lisp files to the device.
♪♫ Alex
--
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe