LDR - Буквальный пул - ARM

Я знаю, как загрузить непосредственное значение, используя инструкцию LDR в ARM.

Например:

LDR R0,=0x0804c088 Эта инструкция загружает значение (0x0804c088) в реестрr0, Когда я пытаюсь получить доступ к адресу, он сохраняется вx/x $r0 с помощьюgdb, Я получаю сообщение:Cannot access memory at address0x0804c088, Но это не адрес, это значение, хранящееся в этом регистре, и адресPC относительный адрес, который хранится в буквальном пуле.

В чем ошибка, которую я там делаю? я что-то не так понял?

Кроме того, как мне установить буквальный пул, не могли бы вы привести пример?

@Carl Norum: Вот код.

__asm__("LDR R0,=0x0804c088");
__asm__("LDR R1,[PC, #34];");

O / P от GDB

(gdb) info registers
r0             0x804c088        134529160
r1             0xf2c00300       4072669952
r2             0x0      0
r3             0x1      1
r4             0x8961   35169
r5             0x0      0
r6             0x0      0
r7             0xbe8f4b74       3197062004
r8             0x0      0
r9             0xef99   61337
r10            0xf00d   61453
r11            0x0      0
r12            0x0      0
sp             0xbe8f4b74       0xbe8f4b74
lr             0x89a7   35239
pc             0x8a62   0x8a62 <test46+34>
cpsr           0x60000030       1610612784
(gdb) x/x $r0
0x804c088:      Cannot access memory at address 0x804c088
(gdb) p/x$r0
$1 = 0x804c088
(gdb) p/x $r1
$2 = 0xf2c00300
(gdb) x/x $r1
0xf2c00300:     Cannot access memory at address 0xf2c00300
(gdb) x/x $r15
0x8a62 <test46+34>:     0x1022f8df

Ответы на вопрос(2)

Ваш ответ на вопрос