ARM程序集跳转到地址

时间:2014-06-10 02:01:06

标签: c assembly arm

我需要在纯 C 中,在读取页面后,我想用跳转指令和另一个函数地址替换函数地址,所以我可以使用另一个函数代替当前函数运行时,实现MOCK。

它在X86上运行良好,但在ARM上,我遇到了一些问题,并且不知道如何解决它。你可以帮帮我吗?

什么是ARM的跳转指令,以及如何使用memcpy将其替换为当前函数地址?

我认为关键因素可能是16hex ARM跳转指令

1 个答案:

答案 0 :(得分:1)

来自arm社区页面上标题为Caches and Self-Modifying Code的博文:

  

缓存的ARM体系结构具有单独的数据缓存和   指令访问;这些被称为D-cache和I-cache,   分别。 ...有两个CPU接口,   核心可以同时加载指令和一些数据。

     

... 因为D-cache和I-cache不连贯   新写的指令可能会被现有的内容掩盖   I-cache,导致处理器执行旧的(或可能   无效的说明。

我相信文章的其余部分会帮助你深入挖掘,但我想知道你为什么不使用函数指针?它们将更容易构建。