这是我的代码:
AREA Swap, CODE
ENTRY
EXPORT __main
__main
ADR R0, VAR_1
ADR R1, VAR_2
LDR R2, [R0]
LDR R3, [R1]
STR R2, [R1]
STR R3, [R0]
stop B stop
AREA Swap, DATA, READWRITE
VAR_1 DCD 8
VAR_2 DCD 7
END
我可以从地址(r0和r1)中加载值,但是我无法存储它们。 我知道CODE部分是只读的,但是如果我添加READWRITE关键字,则代码将无法正常工作。当我运行调试器时,唯一执行的是 MOV r0,r0
我试图更改内存映射权限,例如此问题的答案: ARM Assembly storing registers to memory 但这不起作用
感谢您的帮助。
答案 0 :(得分:3)
您尚未指定目标处理器,但这听起来像是闪存中的代码空间。通常,程序闪存实际上在运行时是只读的。充其量,您将经过一个非常具体且谨慎的过程来修改Flash的一部分。您不能仅通过声明链接器为READWRITE来更改内存的物理性质。