【发布时间】:2016-05-12 14:39:47
【问题描述】:
我有一个关于汇编中的 linux x86 系统调用的问题。
当我在 linux 上使用 nasm 创建一个新的汇编程序时,我想知道我必须使用哪些系统调用来执行特定任务(例如读取文件、写入输出或简单退出... )。我知道一些系统调用,因为我已经在互联网上的一些示例中阅读过它们(例如 eax=0,ebx=1 int 0x80 exit,返回值为 1),但仅此而已......我怎么知道是否还有其他退出系统调用的参数?或者另一个系统调用?我正在寻找一个文档来解释哪些系统调用具有哪些参数要传递到哪些寄存器。
我已经阅读了有关退出功能等的手册页,但它没有向我解释我在问什么。
希望我已经足够清楚了,
谢谢!
【问题讨论】:
-
@Michael 谢谢,但我已经知道这些网站,但他们实际上并没有告诉我必须在 ecx 中设置哪些“int flags”才能打开系统调用,或者 char *const 必须如何设置文件名......我显然在谷歌上搜索过,但我找不到我正在搜索的内容。这就是我在这里问的原因。 docs.cs.up.ac.za 站点有一个源链接,但是当我点击它时它什么也没做(在 linux 上)
-
“他们实际上并没有告诉我必须在 ecx 中设置哪些“int flags”才能打开系统调用” google“man sys_open”。 “或者 char *const 文件名必须如何” 我不明白评论。
const char*只是一个以 NUL 结尾的字符串的地址。 -
@Michael 那么我自己的机器上没有任何 .h 文件或类似的文件来描述系统调用吗?只有谷歌?
-
在 Linux 系统上,您可以从终端运行
man。系统调用位于手册页的第 2 部分,例如要查看open的手册页,您需要在终端中运行man 2 open。
标签: linux assembly nasm system-calls