【发布时间】:2011-03-21 14:40:31
【问题描述】:
ARM7 命令集提供了在汇编程序中将 32 位值右移任意数量的有效方法。对于操作的第二个操作数,它甚至可以通过将 ror #n 指定为移位器操作数来“免费”,但对于 64 位整数,指令集没有直接支持。除了旋转 1、31、33 或 63 位位置(更不用说 0 或 32)的特殊情况,我只知道如何使用 4 指令来旋转 64 位值(这很容易,所以这里就不写了)。在这四种特殊情况下,我可以将其减少到三个指令,但我不知道一般情况下该怎么做。所以这是我的问题:
给定两个寄存器中的 64 位值,比如 R0 和 R1,是否可以将这个值右旋转 n 个位置(对于任意 n) 三个 ARM7指令?
【问题讨论】:
标签: assembly arm bit-manipulation arm7