@@ -10,6 +10,51 @@
另外还有一个选项是 binaryen, 如果是 binaryen IR 的话, 倒还可以用易语言手写生成, 但是 binaryen 最终是运行在 wasm 上的, 不直接原生运行的话, 就代表着无法简单使用操作系统 API, 以及与已有的易语言生态相容.
+## AST 导出
+
+## 函数实现
+在虚拟机中, 我自己写的代码可以随意操作逻辑, 但是到 llvm 层面, 就得自己新加逻辑来控制常量匹配了. 以如下代码举例:
+```
+f(0) = 1
+f(x) = x * f(x - 1)
+f(x, y) = f(x) + f(y)
+应当编译成四个函数, 一个总入口, 三个子函数
+```c
+// f(0)
+inline double f1() {
+ return 1
+}
+// f(x)
+inline double f2(double x) {
+ return x * f(x - 1)
+// f(x, y)
+inline double f3(double x, double y) {
+ return f(x) + f(y)
+double f(double args[], int args_count) {
+ switch (args_count) {
+ case 1:
+ if (x == 0)
+ return f1()
+ else
+ return f2(x)
+ case 2:
+ return f3(args[0], args[1])
+ }
+然后这门语言除了函数就没东西了, 就这样
## 未来