如何使用ReadOnly(ARM汇编)的CODE节中的存储器中的存储寄存器?

时间:2018-11-09 13:35:32

标签: assembly arm keil armasm

这是我的代码:

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 enter image description here

我试图更改内存映射权限,例如此问题的答案: ARM Assembly storing registers to memory 但这不起作用

enter image description here

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您尚未指定目标处理器,但这听起来像是闪存中的代码空间。通常,程序闪存实际上在运行时是只读的。充其量,您将经过一个非常具体且谨慎的过程来修改Flash的一部分。您不能仅通过声明链接器为READWRITE来更改内存的物理性质。