我正在学习带有at& t语法的汇编语言,我想阅读终端中的一些字符串,以便以后使用它。因此,我想使用SystemCall读取,但是我不知道以后将字符串存储在哪里。有人可以告诉我如何找到字符串吗?
它存储在2nd arg指向的缓冲区中,您传递给read(2)
。
正如玛格丽特·布鲁姆(Margaret Bloom)评论时,x86-64 linux在 rsi
中通过了第二个 syscall
arg,而i386 linux则通过 ecx
中的第二个 int 0x80
arg。有关更多详细信息,请参见有关系统呼叫/ABIS的X86标签Wiki部分。
如果通过无效的指针,read
将返回eax
中的-EFAULT
,并且在任何地方都不会存储任何东西。(您 从传递不良指针到系统呼叫的segfault)。
在Strace(strace ./a.out
)下运行您的程序以查看所有系统调用您的代码。