3

我正在阅读以下演示文稿: 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 页,他们讨论了使用方案生成随后在后续 OS 进程中链接和执行的 ASM。

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

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

我的问题是:

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

(b) 是否有一个简单的“hello world”C 示例可用?

4

1 回答 1

1

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

另一个在这里

在这里,他们给了它四个类别(用例):

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

这里有一个关于 LISP 是否真的可以自我修改的讨论——他们最终得出的结论是它不是。

于 2012-08-30T02:34:35.887 回答