将 OCaml 编译为 TI-84+ CE 计算器

主要观点:介绍如何将 OCaml 程序编译为可在 TI-84+ CE 计算器上运行,利用 Js_of_ocaml 生成 C 代码,通过特定方式实现垃圾回收、构建运行时及构建系统等。
关键信息

  • OCaml 是一种小众函数式语言,作者一直热衷,计算器工具链现支持多种语言但缺 OCaml。
  • 有多种 OCaml 编译器,目标是将整个 OCaml 程序编译为可在计算器工具链编译的 ANSI C 文件。
  • 新的 C 后端参考 Js_of_ocaml 后端编写,用goto语句替代复杂逻辑映射。
  • 通过将局部变量替换为全局栈的显式读写实现垃圾回收,采用标记清除法。
  • extern关键字在 OCaml 中调用 C 函数构建运行时,包括标准库和 TI-84+ CE 库。
  • Js_of_ocaml 在 OCaml 构建系统中受支持,C_of_ocaml 也如此,可方便编写计算器程序。
    重要细节
  • 原生 OCaml 编译器后端需包含垃圾回收和原生函数,因缺乏死代码消除导致代码较大。
  • 新 C 后端利用大部分 Javascript 到 C 的映射,仅需添加少量原生函数和垃圾回收。
  • 垃圾回收时通过扫描全局栈标记存活对象,超过内存限制或上次收集后两倍时进行收集。
  • 构建系统中 LSP 支持和dune build命令可方便编写计算器程序。
  • 目前许多 OCaml 功能不支持,如浮点数、异常等,旋转立方体演示用定点数。未来可能用 wee 使 OCaml 运行在更多地方。所有源代码可在这里找到。
阅读 41
0 条评论