我想写一段不断改变自己的代码,即使改变是微不足道的。
例如,也许像
for i in 1 to 100, do
begin
x := 200
for j in 200 downto 1, do
begin
do something
end
end
假设我希望我的代码在第一次迭代后将行更改x := 200
为其他行x := 199
,然后在下一次迭代后将其更改为x := 198
依此类推。
写这样的代码可能吗?我需要为此使用内联汇编吗?
编辑:这就是为什么我想在 C 中这样做:
该程序将在实验性操作系统上运行,我不能/不知道如何使用从其他语言编译的程序。我需要这样的代码的真正原因是因为此代码正在虚拟机上的来宾操作系统上运行。管理程序是一个二进制翻译器,用于翻译代码块。翻译器做了一些优化。它只翻译一次代码块。下次在客户机中使用相同的块时,翻译器将使用先前翻译的结果。现在,如果代码被即时修改,那么翻译者会注意到这一点,并将其先前的翻译标记为过时的。从而迫使重新翻译相同的代码。这就是我想要达到的,强迫译者做很多翻译。通常,这些块是分支指令(例如跳转指令)之间的指令。我只是认为自我修改代码将是实现这一目标的绝佳方式。