我在理解除 C 之外的编程语言的标准库是如何编写的有问题。
据我了解,C 标准库可以在 C 和汇编程序的混合中实现,其中需要汇编程序以便可以调用系统调用,因此可以使用 fopen、fscanf ...。
其他编程语言如何使用它们的标准库来完成这个功能(使用 i/o、文件、所有其他需要系统调用的东西)?它们是否都允许像 C 这样的汇编器内联,还是有其他方法?
我已经读过可以使用 C 及其标准库来实现其他语言库,但我不确定这是如何完成的。
编辑1. 试图更具体。
(实现标准库的语言称为new_lang。)
如果有人可以详细说明如何在对象代码级别和实现级别完成第二种方法(使用 C 运行时),因为我无法理解的是:
- C 运行时是使用 C 语法还是 new_lang 语法调用的?我们如何从 new_lang 库中的某个地方调用 ssize_t write(int fd, const void *buf, size_t count) ?
- 如果 new_lang 没有指针作为数据类型会发生什么,第二个参数const void *buf to write是如何从 new_lang 传递的?如果 new_lang没有 C 数据类型,它如何跟随C 运行时 api?
- 如果 new_lang 库中的某个函数调用 C 运行时,是否意味着它必须遵守其abi?整数类型的数据大小,char,必须在 new_lang 和 C 中匹配给定平台(以及由 abi 指定的其他内容,参数是通过堆栈还是寄存器等传递)?
这不是有点过度限制,例如,如果 new_lang 需要为 char 保留更多字节怎么办?
我试图尽可能笼统,但我不知道如何在不详细说明的情况下解释这个问题。