我有一个关于C中自修改代码的问题。我有一个用C编写的程序,和 我的目标是通过自修改代码来改变功耗!
如何用C编写自修改代码,在每次运行特定指令(如nop)后更改。我应该在c中使用函数指针吗?
答案 0 :(得分:5)
不,在C语言中没有标准的自修改代码方式,语言不支持它。
存在“hacks”,即围绕语言的方式,但它们都需要您下降到汇编级别并欺骗以覆盖包含代码的内存。缓存,写保护代码空间等存在问题。
关于函数指针,你唯一可以知道的就是可以调用它们。您不能假设指针以任何明显的方式转换为指向实际指令的指针,语言并不能保证这一点(尽管典型架构上的大多数编译器都会以“显而易见的方式”实现函数指针)。