Как я могу использовать регистры магазина в памяти в разделе 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. Вы не можете изменить физическую природу памяти, просто заявив, что она будет переписана для компоновщика.

Другие вопросы по тегам