Я пытаюсь установить load
и store
данные из двух разных регистров arm
.ARM - Инструкции по сборке и хранению
int testing[64*1024] __attribute__ ((aligned (8192)));
__asm__("MOV r0, %0" :: "r" (testing) : "r0");
__asm__("STR R5,[R0];");
В моей первой попытке я пытался сохранить некоторые данные, на который указывает регистр r0
зарегистрировать r5
. Там нет абсолютно нет проблемы компиляции, но данные в регистре cannot be accessed.
Это тот же случай для Load
а.
LDR R1,[R0]
(gdb) info registers
r0 0xb6000 745472
r1 0x1 1
r2 0x0 0
r3 0xb6000 745472
r4 0x8961 35169
r5 0x0 0
r6 0x0 0
r7 0xbeba9664 3199899236
r8 0x0 0
r9 0xefb9 61369
r10 0xf02d 61485
r11 0x0 0
r12 0x0 0
sp 0xbeba9664 0xbeba9664
lr 0x89cb 35275
pc 0xeace 0xeace <test48+14>
cpsr 0x60000030 1610612784
(gdb) bt
#0 0x0000eace in test48()
#1 0x000089ca in main()
(gdb) x/x $r5
0x0: Cannot access memory at address 0x0
(gdb) x/x $r0
0xb6000 <testing>: 0x00000000
По существу, я пытаюсь достичь некоторой встроенной адресации памяти с использованием ldr и str.
Я принял помощь this руководства в то время как я строил мой пример
Любая идея, где я неправильно
Я рекомендую использовать один встроенный сборочный блок и информировать компилятор всех зарегистрированных вами регистров (скребковые регистры). – ugoren
Я просто пытался это сделать. Без изменений. Я до сих пор не могу получить доступ к регистрам. – pistal