Как я могу использовать регистры магазина в памяти в разделе CODE, который является ReadOnly (ARM Assembly)? - PullRequest
0 голосов
/ 09 ноября 2018

вот мой код:

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 Сборка хранения регистров в памяти но это не работает

enter image description here

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 09 ноября 2018

Вы не указали целевой процессор, но похоже, что пространство КОДА находится во флэш-памяти. Как правило, флэш-память программы действительно доступна только для чтения во время выполнения. В лучшем случае вы должны пройти очень конкретную и тщательную процедуру, чтобы изменить часть Flash. Вы не можете изменить физическую природу памяти, просто заявив, что она будет переписана для компоновщика.

...