0
我在将值从寄存器移动到内存位置时出现问题。这很容易。我首先将格式字符串和值abc
移动到正确的位置,并致电printf
。下一个块是我遇到问题的地方。我致电adr r1, abc
将abc
的位置转换为r1
。然后,我将寄存器r4
初始化为10.当我尝试将r4
的值存储到r1
的位置时,这是abc
所在的位置,我得到一个段错误。我真的不知道发生了什么问题。我觉得abc
的地址是错误的,因为它是segfaulting,但我不知道。 代码如下:在ARM中使用STR命令时出错
.section .text
.global main
main:
push {lr}
ldr r1, abc
ldr r0, =print_str
bl printf
adr r1, abc
mov r4, #10
str r4, [r1]
ldr r1, abc
ldr r0, =print_str
bl printf
pop {lr}
bx lr
print_str: .asciz "%d\n"
abc: .word 400
你需要把你的数据放到'.data'部分,如'.text'不可写。 – Jester
虽然它很可能是你写信给.text是问题。但是你没有提供足够的信息,说明arm几乎没有告诉我们什么,需要知道芯片或内核,以及这个代码是什么地址空间(是ram还是ROM/flash等)。即使在闪存中也不意味着你不能写出价值,这取决于...(芯片/情况)。 –