POSIX 标准是否指定像 read() 这样的调用约定函数应该遵循什么?
Does POSIX standard specify what calling convention functions like read() should follow?
我知道 POSIX 定义了一组应该存在于兼容系统中的函数。其中包括 read()
、write()
、printf()
以及我们所知的许多其他 "libc" 函数。
但是 POSIX 是否为它们强制执行调用约定,还是由 OS 实施者选择?
But does POSIX enforce a calling convention for them [...]?
没有。 POSIX 旨在便携。调用约定在很大程度上取决于体系结构,因为它们指定了调用子例程时如何使用堆栈和寄存器的方式。如果 POSIX 强制执行某些调用约定,它将不再普遍适用,或者,它必须为每种可能的体系结构定义调用约定,这是不可能的。
我知道 POSIX 定义了一组应该存在于兼容系统中的函数。其中包括 read()
、write()
、printf()
以及我们所知的许多其他 "libc" 函数。
但是 POSIX 是否为它们强制执行调用约定,还是由 OS 实施者选择?
But does POSIX enforce a calling convention for them [...]?
没有。 POSIX 旨在便携。调用约定在很大程度上取决于体系结构,因为它们指定了调用子例程时如何使用堆栈和寄存器的方式。如果 POSIX 强制执行某些调用约定,它将不再普遍适用,或者,它必须为每种可能的体系结构定义调用约定,这是不可能的。