ARM汇编指令#(2*4)的含义
Meaning of ARM assembly instruction #(2*4)
在 gdb 会话期间,我遇到了如下汇编指令
mov r0, #(2*4)
据我了解,# 是字面意思,它应该提供一个常量而不是一个操作。我理解正确吗?
p.s按我的理解,这是给寄存器r0赋值8,对吗?
了解汇编语言是由 assembler 工具定义的,因此如果完全支持它,它是特定于工具的,假设它受支持,这看起来确实像 constant/immediate。
mov r0,#(2*4)
assemble 然后disassemble
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 assembler 是的,它就是这样做的。有时当你看到这样的语法时,它不是真正的汇编(比如使用#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 assembler 带有 arm 目标。
在 gdb 会话期间,我遇到了如下汇编指令
mov r0, #(2*4)
据我了解,# 是字面意思,它应该提供一个常量而不是一个操作。我理解正确吗?
p.s按我的理解,这是给寄存器r0赋值8,对吗?
了解汇编语言是由 assembler 工具定义的,因此如果完全支持它,它是特定于工具的,假设它受支持,这看起来确实像 constant/immediate。
mov r0,#(2*4)
assemble 然后disassemble
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 assembler 是的,它就是这样做的。有时当你看到这样的语法时,它不是真正的汇编(比如使用#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 assembler 带有 arm 目标。