臂组件中的mov.w与movw



浏览Rust Embedded的发现书,我经常看到ARM汇编代码如下:

08000248 <registers::__cortex_m_rt_main::h199f1359501d5c71>:
8000248:       push    {r7, lr}
800024a:       mov r7, sp
800024c:       bl  #0x22
8000250:       movw    r0, #0x1018
8000254:       mov.w   r1, #0x200
8000258:       movt    r0, #0x4800
800025c:       str r1, [r0]
800025e:       mov.w   r1, #0x800
8000262:       str r1, [r0]
8000264:       mov.w   r1, #0x2000000
8000268:       str r1, [r0]
800026a:       mov.w   r1, #0x8000000
800026e:       str r1, [r0]
8000270:       b   #-0x4 <registers::__cortex_m_rt_main::h199f1359501d5c71+0x28>

我读了一些ARM汇编,我知道mov可以取32位操作数,也可以取16位立即数(对于32位系统(。movt/movw指令允许我指定32位寄存器的高/低字节,但在mov.w上找不到任何引用。movwmov.w之间有什么区别?

指令宽度说明符.W.N控制T32指令编码的大小。

就诊指导书宽度说明符

最新更新