我正在尝试将一个寄存器设置为 12000。由于 MOV 不能将大于 255 的值放入我的数字 12000/2^8=375。但是 375 仍然太大,不能被 2 整除。 内存中是否只剩下 12000 存储?效率会低很多吗?

出于好奇,为什么它是 255 而不是 256,因为它是未签名的?

最佳答案

您的目标是什么 ARM 架构?在 ARMv7 上,有一个非常好的解决方案——movw 指令,它采用 16 位立即数:

movw r0, #12000

在 ARMv7 之前,您需要使用两个步骤:
mov  r0,     #0x00002e00
orr  r0, r0, #0x000000e0

请注意,可表达的立即数不仅仅是八位宽;它们是由任何偶数偏移量旋转的八位。或者,您可以简单地从内存加载值而不是使用立即数。

关于assembly - 在 Arm 中表示大数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8032051/

10-12 17:23