在计算机科学中,动态重新编译(有时缩写为dynarec或伪首字母缩写DRC)是某些模拟器和虚拟机的功能。在执行期间,系统会重新编译程序的一些部分,调整生成的代码,使其表现程序的运行时环境,并有可能利用那些传统静态编译器不能获得的信息,生成更高效的代码。
大多数动态重编译器用于在执行时不同架构间转换机器码。这是一个在模拟传统游戏平台中往往需要执行的任务。在其他情况下,系统可采取动态重编译作为自适应优化的一部分,以执行可移植程序,如 Java 与 .NET 通用语言运行库 字节码。全速调试器还使用动态重编译来减少大多数逆优化技术中产生的空间开销,并实现其他功能,例如动态线程迁移。
动态重编译执行的主要任务:
动态重编译也可以执行一些辅助任务: