【发布时间】:2010-09-11 05:29:45
【问题描述】:
根据the documentation for fgets(),该函数接受三个参数:
- char * - 保存输入的字符串
- int - 一个整数,表示要读取的最大字符数
-
FILE * - 要读取的流的
FILE *
调用函数没有问题。我只是把push这三个参数入栈,调用函数,把ESP加12。
我的问题在于参数 #3。什么应该作为FILE * 传递给标准输入?在 C 语言中,我可以只使用 stdin,但我不知道 x86 汇编中的等价物是什么。
更新:我在 Linux 上使用 NASM。
【问题讨论】:
-
当我不知道如何在汇编中做某事时,我通常只是用 C 编译它并检查输出。但是,对于这种情况,这几乎没有用:GCC 使用
___stdinp@GOTPCREL(%rip),这似乎是非常特定于平台的。也许你可以做一个返回标准输入的 C 函数,并从你的程序集中调用它。 -
@zneak: 是否有从标准输入读取字符输入的替代功能?我试过
scanf(),但它有自己的问题。 -
您可以将
read与文件描述符#0 一起使用。应该做的伎俩。几秒钟前我已经建议它作为答案。 -
@zneak:我一定会试一试的。
标签: linux file-io assembly nasm