【发布时间】:2012-08-28 22:44:08
【问题描述】:
我正在阅读以下演示文稿: http://wingolog.org/pub/qc-2012-js-slides.pdf 其中谈到 (4,10,19) 内联 ASM 生成作为 Javascript 优化中使用的一种技术。
在以下论文中: https://sites.google.com/site/juliangamble/Home/Compilers%20Tutorial%202006-09-16.pdf?attredirects=0&d=1 在第 30 页和第 31 页,他们讨论了使用方案生成 ASM,该 ASM 随后被链接并在后续的 OS 进程中执行。
您想要生成 ASM 并在现有流程中执行它的场景如何? (即没有后续链接并在单独的步骤中执行)。
我假设这归结为(例如在 C 中)生成 ASM,将字节写入内存区域(代码作为数据)并添加函数头并返回(与C 调用者(类似于我们在上面的 Goloum 论文第 3 页上看到的)。然后我们获取该数据指针并将其转换为函数指针并调用它(代码即代码 - 从代码作为数据)。
我的问题是:
(a) 这种内联代码生成和执行的术语是什么?
(b) 是否有一个简单的“hello world”C 示例可用?
【问题讨论】:
-
我称之为即时 (JIT) 编译。许多 Scheme 实现都使用它,例如 Racket 和 Larceny。
-
这与这个问题stackoverflow.com/questions/3073653/… 非常相似(但没有示例) - 他们称之为自我修改代码 - 我不确定我是否同意我的分类
标签: javascript assembly scheme inline-assembly dynamically-generated