自修改代码的用例?

gyl*_*lns 4 self-modifying von-neumann

Von Neumann架构上,程序和数据都存储在内存中,因此程序可以自行修改。这对程序员有用吗?你能举一些例子吗?

Nik*_* B. 5

变质

我想到的一个(可疑)用例是变态计算机病毒。这些是恶意软件,它们通过将自己的机器代码重写为外观不同的语义等效表示,从而无法进行基于签名的检测

蹦床

另一个(更复杂,但也更常见)的用例是绷床,这是一种基于动态代码生成的技术,用于解决嵌套函数调用的某些问题。

JIT编译

我能想到的最常见的动态代码生成用法是JIT(即时)编译。诸如.NET或Java之类的现代语言不会被编译成本机代码,而是被编译成某种中间语言(称为字节码)。然后在执行程序时(由为目标体系结构编写的虚拟机)解释该字节码。同时,后台进程检查非常频繁地执行代码的哪些部分。这些部件很有可能被动态编译为本机语言,以实现最佳性能。所有这些都在程序运行时发生!

安全隐患

要记住的一件事是,将数据解释为代码的可能性对于利用计算机软件中的安全漏洞很有用,这就是为什么现代硬件和操作系统的趋势是启用甚至在可能的情况下实现代码分离和数据(另请参见NX位DEP)。


Lee*_*ley 1

我可以通过向您介绍类似(写得非常好并且回答得很好)问题的答案来最好地回答这个问题,该问题也在 StackOverflow 上 - Homoiconic 和“无限制”自修改代码 + lisp 真的可以自修改吗?。答案集中在 Lisp 上,这是一种以将“代码就是数据”提升到新水平而闻名的家族语言,并探讨了它在人工智能中的用途。