我想写一个OCaml编译器(非常微小、简单——实际上我不知道该怎么做!)。与此同时,我希望避免在项目中检查任何ISO-C代码(尽管我对C相当熟悉;这里的目标是仅学习和使用OCaml)。为此,我需要在OCaml中编写编译后语言的“运行时”,将其与主项目分开编译,然后链接到编译器本身的输出。不幸的是,似乎任何外部函数——即使它们不涉及任何OCaml数据结构/OCaml堆,也需要使用OCaml的C宏来构建:
参考资料,我正在学习 Ghuloum 的 IACC:http://ell.io/tt$ocameel。
CAMLprim value scheme_entry(value unit) {
int i;
i = 42;
return Val_int(i);
}
如果我自己发出汇编指令,这可能不是一个选择。(至少在我学到更多之前不是!)
是否有任何方法(包括hacky的方法-这是个人学习项目),可以从OCaml调用以下非常简单的函数?
_scheme_entry:
movl $42 %eax
ret
参考资料,我正在学习 Ghuloum 的 IACC:http://ell.io/tt$ocameel。