2016-06-14 66 views
-1

我正在用AT & T语法学习汇编语言,我想从终端读取一些字符串,以便稍后使用它。 因此,我想使用systemcall读取,但我不知道字符串存储在哪里。有谁能告诉我如何找到字符串?sys_read之后存储的字符串在哪里?

+1

我们可以看看你的代码吗?点击您问题下方的“修改”,粘贴您的代码并保存问题。 –

+2

通常在进行系统调用之前,您必须将*指向将写入字符串的缓冲区的指针放入* ECX *或* RSI *(取决于平台)。 –

+0

你正在编程什么操作系统? – fuz

回答

1

它存储在the 2nd arg you passed to read(2)指向的缓冲区中。

由于玛格丽特·布鲁姆的意见,X86-64的Linux传入rsi第二syscall ARG,而i386的Linux的传入ecx第二int 0x80 ARG。有关更多详细信息,请参阅标记wiki的系统调用/ ABI部分。


如果传递了无效的指针,read将在eax返回-EFAULT并没有在任何地方存储任何。 (你不要得到一个段错误传递坏系统调用指针)。

在strace(strace ./a.out)下运行你的程序来查看你的代码所做的所有系统调用。