Мне нужно найти адрес каждой ячейки памяти, к которой обращается моя программа, работающая на Raspberyy pi3 на основе ARMv7 ISA.
По сути, я хочу захватить все загрузки и хранилища моей программы, чтобы построить детальную трассировку памяти. Конечное намерение состоит в том, чтобы изучить, как конкретный шаблон доступа к памяти влияет на задержку доступа, и, следовательно, важна детальная трассировка.
Я попытался отследить через GDB, например:
gdb) while 1
> x/i $pc
>stepi
>end
Однако проблема в том, что он возвращает следы вроде
ldr r3, [r7, # 4]!
Что мне нужно, так это «ldr r3, адрес памяти», где мне не нужно пересчитывать значение, хранящееся в регистре r7, и добавлять 4 и т. Д.
Программа довольно велика, а трассировка заняла часы. Есть ли способ получить адреса напрямую?