ARM汇编指令#(2 * 4)

时间:2018-11-30 12:49:51

标签: assembly cortex-m

在gdb会话期间,我遇到了如下汇编指令

mov r0, #(2*4)

据我所知#是文字,它假定提供一个常量而不是一个运算符。我理解正确吗?

p.s据我了解,这是将8分配给寄存器r0,对吗?

1 个答案:

答案 0 :(得分:2)

理解汇编语言是由汇编器(该工具)定义的,因此,如果完全支持该语言,则它是特定于工具的,假设受支持,则它看起来就像是常量/立即数。

mov r0,#(2*4)

组装然后拆卸

arm-none-eabi-as so.s -o so.o
arm-none-eabi-objdump -D so.o

so.o:     file format elf32-littlearm


Disassembly of section .text:

00000000 <.text>:
   0:   e3a00008    mov r0, #8

因此对于此版本的gnu汇编程序,是的。有时,当您看到这样的语法不是真正的汇编语言时(例如使用#defines),就需要通过gcc的预处理器运行它

arm-none-eabi-gcc -c so.s -o so.o
arm-none-eabi-objdump -D so.o

so.o:     file format elf32-littlearm


Disassembly of section .text:

00000000 <.text>:
   0:   e3a00008    mov r0, #8
在这种情况下,对于具有手臂目标的gnu汇编程序版本,不需要