【发布时间】:2011-01-30 13:22:07
【问题描述】:
我正在尝试在 Linux (RedHat Enterprise 8) 中实现系统调用,但我对它的工作方式有点困惑。据我了解,我在用户模式下实现了一个包装器,它将系统调用号放在 eax 中,并将参数放在 ebx、ecx、edx 等中,然后调用 int 0x80 来调用适当的系统调用。我的问题是,由于系统调用像普通 C 函数一样编写,它如何知道哪些寄存器包含哪些参数?它是一种惯例,还是有一种机制,如果有,它在哪里以及如何做到这一点?
编辑:这是一个家庭作业。我知道有系统调用宏可以为我做这些事情。
【问题讨论】:
-
那么你为什么不阅读宏来看看它们在做什么呢?
-
我做到了,但我无法从中弄清楚任何事情。这不完全是标准的汇编代码。
标签: linux system-calls