Вопрос о форматах адресов сборки Aarch64

Я новичок в linux GDB, и у меня есть вопросы по сборке Aarch64:

В моем дампе ассемблера есть следующие строки:

0x0000005555555788 <+36>: str w0, [sp, #24]

0x000000555555578c <+40>: ldr w1, [sp, #24]

Я знаю, что означают LDR и STR, и что w0, w1 представляют собой регистры,

Но я хотел бы знать часть [sp, #24]. Что означают sp и #24?


person Cyh1368    schedule 04.06.2021    source источник
comment
Это режим адресации с использованием SP, указателя стека. Прочтите руководство, предоставленное поставщиком, или любой учебник по основам, например. этот на arm.com: developer.arm.com /documentation/102374/0101/ охватывает режимы адресации AArch64. См. также управление стеком ARM AArch64 и понимание сборки aarch64. вызов функции, как работает стек, хотя ни один из них не является дубликатом.   -  person Peter Cordes    schedule 04.06.2021
comment
@PeterCordes Документация ARM очень помогла. Спасибо!   -  person Cyh1368    schedule 04.06.2021


Ответы (1)


str w0, [sp, #24] означает магазин w0 по адресу sp+24.

ldr w1, [sp, #24] означает загрузку w1 с адреса sp+24.

Оба они используют синтаксис базового плюс смещения, описанный в разделе C1.3.3 Справочное руководство по архитектуре.

person apt1002    schedule 14.06.2021