在ADDW的情况下,我知道的立即值不能超过12位。有没有办法在一条指令中实现这一点?
发布于 2020-05-01 21:17:14
让工具来做这项工作,BTW在arm (和其他ISA)中立即在这里被问和回答了很多次。gnu汇编程序将使用伪代码(通常)选择最佳解决方案。
.cpu cortex-m0
.thumb
ldr r0,=0xFFFFE
.align
00000000 <.text>:
0: 4800 ldr r0, [pc, #0] ; (4 <.text+0x4>)
2: 46c0 nop ; (mov r8, r8)
4: 000ffffe strdeq pc, [pc], -lr启用thumb2扩展
.cpu cortex-m7
.thumb
.syntax unified
ldr r0,=0xFFFFE
ldr r1,=0x00010001
.align另一个常量是确认它正在尝试thumb2扩展。
所以没有捷径,你要么需要在部件中构建值,要么从附近的pc相对加载。或者只是用伪代码进行编码,然后得到你想要的结果。
一个类似的常量
cpu cortex-m7
.thumb
.syntax unified
ldr r0,=0xFFFFFFFE
ldr r1,=0x00010001
.align
00000000 <.text>:
0: f06f 0001 mvn.w r0, #1
4: f04f 1101 mov.w r1, #65537 ; 0x10001可以在没有pc相对负载的情况下完成。
不,你不能用一条指令来实现它。
但这一点:
add r10,r11,#0xFFFFFFFE你的can...if很有帮助。
https://stackoverflow.com/questions/61542409
复制相似问题