编译Pharo到C?

use*_*508 4 smalltalk compilation pharo

据说Pharo的VM(CogVM)在Smalltalk中被开发,测试,分析等,但是Smalltalk代码被转换为C,然后使用默认的系统C编译器与一些OS抽象C代码一起编译.

好吧,我想做类似的事情,我不想使用Pharo开发,测试和分析代码,但是然后将其编译为C.我怎么能这样做?如何编译到C的工作原理?Pharo是否附带Smalltalk to C转换器?我怎么能调用它?它是否编译完整的Smalltalk,或者我必须使用某种Smalltalk子集?有没有关于它的好文件?

Max*_*ske 5

Pharo VM 托管在github上.按照步骤构建它,你将获得一个名为"generator.image"的Smalltalk图像,你可以运行它(它是一个常规图像).在该图像内部,您将找到VMMaker软件包,该软件包负责从用于此的特殊Smalltalk方言生成C代码(称为Slang;它是Smalltalk的子集).查看生成器映像中的代码,以了解它的作用.首次打开图像时,工作区中还包含一些信息.

只要你拥有C源代码,它就基本上是直接的C编译(我们使用Cmake + gcc/clang).

至于文档:您应该阅读蓝皮书.

clarifiation

正如@Leandro Caniglia在评论中指出的那样,Slang的目的是为VM生成C源代码.它旨在简化到C的翻译.这并不意味着:

  • 可以使用生成机制将任意Smalltalk代码转换为C.
  • 任意Smalltalk代码可以在俚语中重写(至少不"轻易")

  • 我觉得我们应该增加有关的事实,俚语并不意味着提供一种用于转换Smalltalk的程序到C程序的支持,对一些澄清?否则,这个问题的读者可能错误地解释说有一种相当直接的方法可以做到这一点.俚语的表现是足够的VM源的产生,但是,这并不意味着它足够的任意Smalltalk的代码或任意Smalltalk的代码生成可以在俚语方面被改写. (4认同)