assembly 臂组件中的移动与移动

zzlelutf  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(171)

在浏览Rust Embedded discovery book时,我经常看到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之间有什么区别?

lskq00tm

lskq00tm1#

指令宽度说明符.W.N控制T32指令编码得大小.
访视Instruction width specifiers

相关问题