Operating system 自定义编程语言~如何与操作系统交互

Operating system 自定义编程语言~如何与操作系统交互,operating-system,system-calls,Operating System,System Calls,我正在尝试创建自己的编程语言,但我已经有点超前了。 当然,当我可以编译一个小程序的时候,我不会有一个标准库, 你必须自己创造一个。现在举个例子,我想添加一些功能来将字符串打印到屏幕上,我非常确定我必须对操作系统进行一些系统调用才能显示它 那么,关键是:与操作系统交互的最佳方式是什么 我自己想到的可能性: -生成对象文件并将其链接到(例如)C标准库 -使用包含系统调用的嵌入式汇编语言编写文件 我感觉有更好的可能性 我希望你能帮助我 基督教徒 编辑:这是我正在创建的编译语言 Stdin和stdout

我正在尝试创建自己的编程语言,但我已经有点超前了。 当然,当我可以编译一个小程序的时候,我不会有一个标准库, 你必须自己创造一个。现在举个例子,我想添加一些功能来将字符串打印到屏幕上,我非常确定我必须对操作系统进行一些系统调用才能显示它

那么,关键是:与操作系统交互的最佳方式是什么

我自己想到的可能性: -生成对象文件并将其链接到(例如)C标准库 -使用包含系统调用的嵌入式汇编语言编写文件

我感觉有更好的可能性

我希望你能帮助我

基督教徒


编辑:这是我正在创建的编译语言

Stdin和stdout几乎是最小值-如果您使用的是Unix环境,则可以访问它们的键盘、命令行,还可以通过管道将文本输入和输出到文件


如果您正在编写一种新语言,那么StdError也值得考虑

Stdin和stdout几乎是最小值-如果您使用的是Unix环境,则可以访问它们的键盘、命令行,还可以通过管道将文本输入和输出到文件


如果您正在编写一种新语言,那么StdError也值得考虑

Stdin和stdout几乎是最小值-如果您使用的是Unix环境,则可以访问它们的键盘、命令行,还可以通过管道将文本输入和输出到文件


如果您正在编写一种新语言,那么StdError也值得考虑

Stdin和stdout几乎是最小值-如果您使用的是Unix环境,则可以访问它们的键盘、命令行,还可以通过管道将文本输入和输出到文件


如果您正在编写一种新语言,那么StdError也值得考虑

你基本上有两个选择,就像你自己说的那样。您可以将标准库与标准C库链接,以便标准库中的I/O函数可以使用C函数。或者,您可以直接对操作系统进行系统调用

第二种方法似乎需要做更多的工作:每个操作系统上的系统调用都不同,因此在移植系统时需要做大量的工作。系统调用可能没有很好的文档记录,这会导致许多问题


您可以先将标准库链接到C标准库,然后暂时考虑语言的其他方面。稍后,您可以研究用syscalls替换您使用的C函数。

您基本上有两种选择,就像您自己所说的。您可以将标准库与标准C库链接,以便标准库中的I/O函数可以使用C函数。或者,您可以直接对操作系统进行系统调用

第二种方法似乎需要做更多的工作:每个操作系统上的系统调用都不同,因此在移植系统时需要做大量的工作。系统调用可能没有很好的文档记录,这会导致许多问题


您可以先将标准库链接到C标准库,然后暂时考虑语言的其他方面。稍后,您可以研究用syscalls替换您使用的C函数。

您基本上有两种选择,就像您自己所说的。您可以将标准库与标准C库链接,以便标准库中的I/O函数可以使用C函数。或者,您可以直接对操作系统进行系统调用

第二种方法似乎需要做更多的工作:每个操作系统上的系统调用都不同,因此在移植系统时需要做大量的工作。系统调用可能没有很好的文档记录,这会导致许多问题


您可以先将标准库链接到C标准库,然后暂时考虑语言的其他方面。稍后,您可以研究用syscalls替换您使用的C函数。

您基本上有两种选择,就像您自己所说的。您可以将标准库与标准C库链接,以便标准库中的I/O函数可以使用C函数。或者,您可以直接对操作系统进行系统调用

第二种方法似乎需要做更多的工作:每个操作系统上的系统调用都不同,因此在移植系统时需要做大量的工作。系统调用可能没有很好的文档记录,这会导致许多问题


您可以先将标准库链接到C标准库,然后暂时考虑语言的其他方面。稍后,您可以研究用syscalls替换使用的C函数。

您的编程语言是编译为本机代码还是在解释器或某种托管环境中运行?@Joni it's compiled!我将把它添加到问题中!编译本机或您可以编译为VM的字节码,例如Java运行时。-取舍是速度/功能/灵活性。@Billybigpotations非常感谢!我首先关注编译为本机代码!但谁知道有一天我也能广告字节码!你帮了我很多忙,谢谢。(我希望我能给你更多的信任……)你的编程语言是编译成本地代码还是在解释器或某种托管环境中运行?@Joni it's compiled!我将把它添加到问题中!编译本机或您可以编译为VM的字节码,例如Java运行时。-取舍是速度/功能/灵活性。@Billybigpotations非常感谢!我首先关注编译为本机代码!但谁知道有一天我也能广告字节码!你帮了我很多