【发布时间】:2021-01-17 18:35:22
【问题描述】:
我有一个 64 位数量,其中最高有效 32 位在 R2 中,最低有效 32 位在 R3 中。
如何将 64 位逻辑和算术右移 4 位?
另外,我怎样才能 64 位将这些右旋转 2 位。
如何在 32 位 ARM 上以最少的指令数做到这一点?
【问题讨论】:
-
最好先将这两个部分合并到一个寄存器中。
-
但是寄存器是 32 位的
-
对不起,我很抱歉。由于某种原因,您正在为 ARM64 编程。无论如何,弄清楚这些事情的一个好主意是让 C 编译器为你做这件事,然后复制它所做的事情。例如。请参阅 here 了解 clang 会做什么。
-
谢谢!如果有更好的答案,我会查看并搜索更多内容
-
没有更好的答案,寄存器是 32 位,您必须使用多条指令来执行分段移位。不管这是 arm 或 mips 还是 C 或 java,它都是相同的进程(具有固定大小的变量/寄存器)。某些语言可能具有更多功能,可以缩短流程,但最终没有更好的答案。
标签: assembly arm 64-bit bit-shift shift