Это описание действительно для Linux 32 бит: Когда начинается программа Linux, все указатели на аргументы командной строки сохраняются в стеке. Количество аргументов сохраняется в 0 (% ebp), имя программы сохраняется в 4 (% ebp), а аргументы сохраняются от 8 (% ebp).
Мне нужна такая же информация для 64-битной .
Редактировать: У меня есть рабочий пример кода, который показывает, как использовать argc, argv [0] и argv [1]: http://cubbi.com/fibonacci/asm.html
.globl _start _start: popq %rcx # this is argc, must be 2 for one argument cmpq $2,%rcx jne usage_exit addq $8,%rsp # skip argv[0] popq %rsi # get argv[1] call ... ... }
Похоже, параметры находятся в стеке. Поскольку этот код непонятен, я задаю этот вопрос. Полагаю, я могу сохранить rsp в rbp, а затем получить доступ к этим параметрам, используя 0 (% rbp), 8 (% rbp), 16 (% rbp) и т. Д. Это правильно?