Browse Source

添加说明

myuan 3 years ago
parent
commit
3390038048
1 changed files with 45 additions and 0 deletions
  1. 45 0
      4. 抽象语法树编译到 llvm/readme.md

+ 45 - 0
4. 抽象语法树编译到 llvm/readme.md

@@ -10,6 +10,51 @@
 
 
 另外还有一个选项是 binaryen, 如果是 binaryen IR 的话, 倒还可以用易语言手写生成, 但是 binaryen 最终是运行在 wasm 上的, 不直接原生运行的话, 就代表着无法简单使用操作系统 API, 以及与已有的易语言生态相容. 
 另外还有一个选项是 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])
+    }
+}
+
+```
+
+然后这门语言除了函数就没东西了, 就这样
 
 
 ## 未来
 ## 未来