Как я могу использовать регистры магазина в памяти в разделе CODE, который является ReadOnly (ARM Assembly)?
Вот мой код:
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 хранит регистры в памяти, но это не работает
Любая помощь приветствуется.
1 ответ
Вы не указали целевой процессор, но похоже, что пространство CODE находится во флэш-памяти. Как правило, флэш-память программы действительно доступна только для чтения во время выполнения. В лучшем случае вы должны пройти очень конкретную и тщательную процедуру, чтобы изменить часть Flash. Вы не можете изменить физическую природу памяти, просто заявив, что она будет переписана для компоновщика.