簡體   English   中英

ARM匯編跳轉至地址

[英]ARM assembly Jump to address

我需要純C語言 ,在讀取頁面后,我想用跳轉指令和另一個函數地址替換函數地址,因此我可以在運行時使用另一個函數而不是當前函數來實現MOCK。

它在X86上可以正常工作,但是在ARM上,我遇到了一些問題,並且不知道如何解決。 你可以幫幫我嗎?

什么是ARM的跳轉指令,以及如何使用memcpy將其替換為當前函數地址?

我認為關鍵因素可能是16hex ARM跳轉指令

摘自arm社區頁面上標題為“ 緩存和自我修改代碼”的博客文章:

緩存的ARM體系結構具有用於數據和指令訪問的單獨緩存 它們分別稱為D-cache和I-cache。 ...具有兩個與CPU的接口,內核可以同時加載一條指令和一些數據。

... 由於D緩存和I緩存不相關因此新編寫的指令可能會被I緩存的現有內容掩蓋,從而使處理器執行舊的 (或可能無效的)指令。

我相信本文的其余部分將幫助您更深入地研究,但是我想知道為什么您不使用函數指針? 它們將更容易建立。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM