Как я могу найти все адреса доступа к памяти, выполненные с помощью операций загрузки или сохранения (процессор ARM) с помощью gdb или любого другого инструмента - PullRequest
0 голосов
/ 18 сентября 2018

Мне нужно найти адрес каждой ячейки памяти, к которой обращается моя программа, работающая на Raspberyy pi3 на основе ARMv7 ISA.

По сути, я хочу захватить все загрузки и хранилища моей программы, чтобы построить детальную трассировку памяти. Конечное намерение состоит в том, чтобы изучить, как конкретный шаблон доступа к памяти влияет на задержку доступа, и, следовательно, важна детальная трассировка.

Я попытался отследить через GDB, например:

gdb) while 1
> x/i $pc
>stepi
>end

Однако проблема в том, что он возвращает следы вроде

ldr r3, [r7, # 4]!

Что мне нужно, так это «ldr r3, адрес памяти», где мне не нужно пересчитывать значение, хранящееся в регистре r7, и добавлять 4 и т. Д.

Программа довольно велика, а трассировка заняла часы. Есть ли способ получить адреса напрямую?

...