sys_read之后存储的字符串在哪里



我正在学习带有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)下运行您的程序以查看所有系统调用您的代码。

最新更新