我在理解汇编中更复杂的系统调用时遇到了一些麻烦。我写了一个 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[]);
谢谢大家