我想在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