自定义语言中的标准C库支持

时间:2012-04-15 17:42:25

标签: c compiler-construction standard-library

我正在开发自定义语言,一切运行良好,但我停止添加标准函数的支持,如getchar(),fopen()等。我的一个想法是解析可视.lib文件,但它是大规模的任务(例如由于缺乏规范)。你有其他想法吗?它是如何用D语言制作的?

编辑: 我想要实现的是能够使用系统功能(例如打开文件,使用套接字),但无需从头开始编写。我需要一些方法来访问已编写的libs / dll。

最简单的解决方案是加载例如C标准库并调用这些函数(之前设置堆栈),但我需要有一些方法来获取这些代码(汇编)。

1 个答案:

答案 0 :(得分:1)

通常,您可以创建自己的标准库,这对您的语言有意义,而不是使用C标准库。你为什么要编写自己的语言,而不应该用于标准库的设计?

为了与C库的兼容性,我发现最常见的方法是用不同的语言重新表达库的接口。 Python为此提供了ctypes模块。在.NET中,您将使用P / Invokes。当您翻译界面时,这会带来一些手动工作和错误机会,但它比自动化流程更简单,更强大。

此外,.NET的设计使得只要正确设计了库和语言,就可以从.NET中的任何语言实现访问.NET库。特定语言可能有自己的需求,由他们自己的标准库填充,但控制台i / o之类的东西在一个地方,不需要被每种语言重新发明。