x-lisp编程语言集合
基于 lisp 语法框架的编程语言
极简的静态类型 lisp。
meta-lisp 中文翻译为「元语」。
支持中文编程。
SSA 中间表示。
(define-function (math/factorial n)
(block body
(= n (argument :index 0))
(= int.3 (int :content 1))
(= value.4 (int-less-or-equal n int.3))
(branch value.4 :then-label then.1 :else-label else.2))
(block then.1
(= int.1 (int :content 1))
(return int.1))
(block else.2
(= int.2 (int :content 1))
(= value.3 (isub n int.2))
(= value.2 (call value.3 :name math/factorial))
(= value.1 (imul value.2 n))
(return value.1)))XVM 虚拟机。
(define-function (math/factorial n)
body
(load-int int.3 1)
(int-less-or-equal value.4 n int.3)
(branch value.4 (label then.1) (label else.2))
then.1
(load-int int.1 1)
(return int.1)
else.2
(load-int int.2 1)
(isub value.3 n int.2)
(call-1 (fn math/factorial) value.3)
(load-result value.2)
(imul value.1 value.2 n)
(return value.1))使用 lisp 语法的 x86-64 汇编。
; conditional branch
;
; 10 > 3, takes is-greater path, returns 1
;
(define-code main
(mov (reg rax) 10)
(mov (reg rcx) 3)
(cmp (reg rax) (reg rcx))
(j (cc g) (label is-greater))
(mov (reg rax) 0)
(ret)
is-greater
(mov (reg rax) 1)
(ret))