У меня проблемы с пониманием более сложных системных вызовов в сборке. Я написал EXEC системный вызов, и он работал большойСборочные и системные вызовы
.bss
.text
.globl _start
_start:
#exit(0) system call
movl $1, %rax
movl $0, %rbx
int $0X80
Хотя я немного подстраховаться и не смогли найти информацию, касающиеся того, как вы положили строки в регистр. Так, например, я хотел бы выполнить системный вызов exec, и ему, поскольку его первому параметру требуется имя файла для запуска, и я хочу запустить «/ bin/bash», но как получить его в rbx. Как я даже знаю, что мне нужно использовать rbx, в X86 я знаю, что буду использовать ebx, это те же отношения в amd64 ebx = rbx, ecx = rcs и т. Д.
int execve (const char * filename, char * const argv [], char * const envp []);
Все
теперь я понимаю, спасибо. – Recursion
, но вы имеете в виду .asciiz правильно, поэтому его нуль завершен? – Recursion
Рекурсия: Да. –