Как программа загружается в стек на aarch64?
До сих пор любил С, начал писать на ассемблере. Удобно, что телефон всегда с собой, поэтому архитектура aarch64. ArchLinux на Termux'е (proot, кажется). И вот запускаю условную программу и хочу считать её аргументы из стека (aka argv[]). Начало радужное: по адресу верхушки стека (sp) располагается количество аргументов (argc), со смещением на один байт — имя файла. А где искать имена аргументов? Непонятно.
Пример: программа main.
Запускаю: ./main arg1 arg2
Бегаю по стеку на ± 1024 бит, вывожу строку через системный вызов write linux — кракозябры :(. Никакой зацепки. На статье про Nasm прочёл, что linux при запуске приложения сохраняет в стек подряд указатели на аргументы. Ан нет, не выходит. Можно, конечно, вывод gcc дизассемблировать, но как-то некруто и "магически". Есть доки на этот счёт? Куда искать, как искать? Что смотреть? Какие-нибудь ссылки на соглашения о вызове программ на Линуксе или на arm... Или всё настолько платформозависимо, что termux эмулирует по-своему? Может кто-то ответить или прикрепить ссылочки?
Буду признателен.