我正在尝试将一个寄存器设置为 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/