【发布时间】:2018-11-09 13:35:31
【问题描述】:
这是我的代码:
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 关键字,代码将无法正常工作。当我运行调试器时,唯一要执行的是 移动 r0, r0
我尝试更改内存映射权限,如此问题中的答案: ARM Assembly storing registers to memory 但它不起作用
感谢任何帮助。
【问题讨论】:
-
请阅读the help pages,获取the SO tour,了解how to ask good questions,以及this question checklist。最后,不要发布 text 的图片。
-
至于你的问题,我对你正在使用的汇编程序一无所知,但是使用数据上方的(不可复制!)
AREA指令,它似乎将数据放入DATA部分?创建Minimal, Complete, and Verifiable Example 时,除了将其复制粘贴为文本外,请在失败 程序中进行。 -
为什么您的所有区域都使用相同的名称?来自文档:“具有相同名称的所有区域都放置在同一个 ELF 部分中。仅应用特定名称的第一个 AREA 指令的属性。”
-
并且根据您使用的汇编器版本,重用相同的名称可能是forbidden altogether:“您必须为同一源文件中的每个区域使用不同的名称。”