【发布时间】:2010-12-18 21:32:58
【问题描述】:
我在理解汇编中更复杂的系统调用时遇到了一些麻烦。我写了一个 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[]);
谢谢大家
【问题讨论】:
标签: linux assembly x86 system-calls