linux – 如何在x86程序集中调用fgets?

根据the documentation for fgets(),该函数有三个参数:

> char * – 一个保存输入的字符串
> int – 一个整数,表示要读取的最大字符数
> FILE * – 要读取的流的FILE *

我可以轻松调用该函数.我只需将三个参数压入堆栈,调用该函数,并将ESP增加12.

我的问题是参数#3.作为标准输入的FILE *应该传递什么?在C中,我可以使用stdin,但我不知道x86程序集中的等价物是什么.

更新:我在Linux上使用NASM.

解决方法:

stdin的问题在于它是一个宏,它不仅扩展到特定于平台的东西,而且很可能很难从手工装配中访问.如果您愿意牺牲stdio并使用POSIX调用,则stdin与众所周知的文件描述符#0相同.因此,你可以传递0到read,几乎可以得到你想要的东西.我很确定这比stdin C宏更易于汇编.

上一篇:assembly x86(nasm)画三角形等图形的实现


下一篇:将值从C程序传递到汇编语言