加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 00:44:30 所属栏目:Linux 来源:网络整理
导读:根据 the documentation for fgets() ,该函数有三个参数: char * – 一个保存输入的字符串 int – 一个整数,表示要读取的最大字符数 FILE * – 要读取的流的FILE * 我可以轻松调用该函数.我只需将三个参数压入堆栈,调用该函数,并将ESP增加12. 我的问题是参
根据 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宏更易于汇编.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读