我想在ARM程序集中僅用24字節的代碼/數據執行以下操作。可能嗎?優化ARM絕對跳轉
PC = [MEMLOC] + PC
或者,投入的話,我想基於向前跳轉PC相對偏移,其從存儲器中讀取。
從MEMLOC讀必須是完整的32位字的值
我可以做到這一點很容易地16 [<之前從32 - 更新]字節(使用標準的LDR和ADD指令),但尋求優化離開一條指令。任何人都知道這是可能的嗎?我認爲有些方法可以處理從內存中讀取的大約20位字,但對於完整的32位字可能無法實現。
更新:這是我:
LDR R12, =MEMLOC1
ADD R12, PC, R12
LDR PC, [R12]
MEMLOC1: (contains 32-bit word)
您是否期望通過刪除一條指令來節省大筆費用?我想,訪問內存來獲得這個抵消可能會消除任何收益。 – 2012-02-28 00:59:50
告訴我們你現在正在努力改進的是什麼? – 2012-02-28 01:23:24
我在原始文章中添加了一個更新,其中包含使用4個字節的指令和數據執行此操作的方法。實際上,我不需要從內存中讀取32位字,但從我所看到的,無法在指令內存儲32位值,因此這似乎很有必要。 – Locksleyu 2012-02-28 01:28:16