执行生成的汇编程序内联

时间:2012-08-28 22:44:08

标签: javascript assembly scheme inline-assembly dynamically-generated

我正在阅读以下演示文稿:     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,随后在后续OS过程中链接和执行。

您希望在现有流程中生成ASM并执行它的场景如何? (即没有后续链接并在单独的步骤中执行)。

假设这归结为(例如在C中)生成ASM,将字节写入内存区域(代码作为数据)并添加函数头并返回(与C调用者(类似于我们在上面的Goloum论文的第3页上看到的)。然后我们获取该数据指针并将其转换为函数指针并调用它(代码作为代码 - 从代码作为数据)。

我的问题是:

(a)此内联代码生成和执行的术语是什么?

(b)有一个简单的“你好世界”的例子吗?

1 个答案:

答案 0 :(得分:1)

有一个很好的例子here。他们再次使用自修改代码的术语。

另一个here

Here他们给出了四个类别(用例):

  • 变质
  • 蹦床
  • JIT编译
  • 安全隐患(不安全的编码/恶意软件)

关于LISP是否真正自我修改有一个讨论here - 他们最终得出结论认为它不是。