我正在阅读英特尔架构文档,vol3,第 8.1.3 节;
与非自修改或普通代码相比,自修改代码将以较低的性能水平执行。性能恶化的程度将取决于修改频率和代码的具体特性。
所以,如果我尊重规则:
(* OPTION 1 *) 将修改后的代码(作为数据)存储到代码段中;跳转到新代码或中间位置;执行新代码;
(* 选项 2 ) 将修改后的代码(作为数据)存储到代码段中;执行序列化指令;(例如CPUID指令*)执行新代码;
并且每周修改一次代码,我应该只在下次修改此代码并即将执行时支付罚款。但在那之后,性能应该与未修改的代码相同(+ 跳转到该代码的成本)。
我的理解正确吗?