在浏览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
上的任何引用。movw
和mov.w
之间有什么区别?
1条答案
按热度按时间lskq00tm1#
指令宽度说明符
.W
与.N
控制T32指令编码得大小.访视Instruction width specifiers