mntmn 4f85691fef make the GUI kinda work on ARM hosted; readme update | %!s(int64=6) %!d(string=hai) anos | |
---|---|---|
.. | ||
legacy | %!s(int64=9) %!d(string=hai) anos | |
os | %!s(int64=6) %!d(string=hai) anos | |
tests | %!s(int64=6) %!d(string=hai) anos | |
README.md | %!s(int64=9) %!d(string=hai) anos | |
alloc.c | %!s(int64=9) %!d(string=hai) anos | |
alloc.h | %!s(int64=9) %!d(string=hai) anos | |
boot-os.l | %!s(int64=6) %!d(string=hai) anos | |
build_arm.sh | %!s(int64=6) %!d(string=hai) anos | |
build_arm_console.sh | %!s(int64=6) %!d(string=hai) anos | |
build_win32.sh | %!s(int64=9) %!d(string=hai) anos | |
build_x64.sh | %!s(int64=9) %!d(string=hai) anos | |
build_x86.sh | %!s(int64=9) %!d(string=hai) anos | |
compiler_arm_hosted.c | %!s(int64=6) %!d(string=hai) anos | |
compiler_m68k.c | %!s(int64=9) %!d(string=hai) anos | |
compiler_new.c | %!s(int64=6) %!d(string=hai) anos | |
compiler_new.h | %!s(int64=9) %!d(string=hai) anos | |
compiler_x64_hosted.c | %!s(int64=9) %!d(string=hai) anos | |
compiler_x86.c | %!s(int64=9) %!d(string=hai) anos | |
jit_arm_raw.c | %!s(int64=9) %!d(string=hai) anos | |
jit_m68k.c | %!s(int64=9) %!d(string=hai) anos | |
jit_x64.c | %!s(int64=9) %!d(string=hai) anos | |
jit_x86.c | %!s(int64=9) %!d(string=hai) anos | |
minilisp.h | %!s(int64=9) %!d(string=hai) anos | |
reader.c | %!s(int64=9) %!d(string=hai) anos | |
reader.h | %!s(int64=9) %!d(string=hai) anos | |
sledge.c | %!s(int64=8) %!d(string=hai) anos | |
stream.c | %!s(int64=9) %!d(string=hai) anos | |
stream.h | %!s(int64=9) %!d(string=hai) anos | |
strmap.c | %!s(int64=9) %!d(string=hai) anos | |
strmap.h | %!s(int64=9) %!d(string=hai) anos | |
unifont.bin | %!s(int64=9) %!d(string=hai) anos | |
unifont.png | %!s(int64=9) %!d(string=hai) anos | |
utf8.c | %!s(int64=9) %!d(string=hai) anos | |
utf8.h | %!s(int64=9) %!d(string=hai) anos | |
writer.c | %!s(int64=6) %!d(string=hai) anos | |
writer.h | %!s(int64=9) %!d(string=hai) anos |
sledge JIT-compiles a minimal subset of LISP to a minimal subset of x64 or armv5 machine code.
./build.sh
./build_rpi.sh
./sledge
sledge> (def my-function (fn a b (* a (+ a b))))
JIT ---------------------
push %rdi
jmp f1_0x7f6a0144ca98
f0_0x7f6a0144ca98:
push %rdi
movq %r12, %rdi
mov (%rdi), %rdi
movq %r13, %rsi
mov (%rsi), %rsi
addq %rsi, %rdi
movq %rdi, %rsi
pop %rdi
movq %r12, %rdi
mov (%rdi), %rdi
imulq %rsi, %rdi
mov $0x406f02, %rax
callq *%rax # alloc_int
ret
f1_0x7f6a0144ca98:
mov $0x7f6a0144ca98, %rax
movq %rax, %rsi
pop %rdi
movq %rax, %rsi
mov $0x7f6a0144c750, %rdi
mov $0x401b21, %rax
callq *%rax # insert_global_symbol
ret
-------------------------
sledge> (my-function 35 36)
JIT ---------------------
mov $0x7f6a0144cb28, %r12
mov $0x7f6a0144cb58, %r13
mov $0x7f6a16a8b003, %rax
callq *%rax # lambda
ret
-------------------------
2485