例如,我们知道printf()
函数在控制台屏幕中显示文本。但是如何定义printf()
之类的函数。是否可以编写代码来显示文本而不使用任何库文件?是用于定义这些函数的汇编代码?
答案 0 :(得分:2)
我们可以更轻松地谈论C,因为它是一种非常基本的语言,而且比asm更高一点。
答案是:系统调用
你可能想知道:为什么?语言不能做的事情。而I / O就是其中之一。 I / O流被拥有"由操作系统。它处理它们
操作系统允许您使用它们,但您必须始终依赖它。
系统调用非常基本:例如,没有格式字符串或其他内容 您还需要考虑系统调用是否依赖于操作系统。的Windows'那些与Linux的不同。
答案 1 :(得分:1)
由于每个库/代码都在内部使用内核提供的操作系统调用。
因此,可以在不使用c
库的情况下编写自己的printf函数。
如果您想了解这些功能在内部是如何工作的,您可以进行assembly language
编程。
答案 2 :(得分:1)
是否可以在不使用任何库文件的情况下编写显示文本的代码?
是的,当然是。您可以直接驱动显示设备,而无需使用标准功能。
是用于定义这些函数的汇编代码吗?
不一定,它可以在c或c ++中完全完成,没有一行汇编代码。
最后,它取决于您用于编译程序的实际工具链,以及随附的标准库,以及如何定义这些函数。有一些低级功能,您可以'覆盖' 为您的具体环境。
通用绑定是将标准输出接口(由printf()
使用)映射到MCU的其中一个UART接口。
对于GCC工具链中常用的newlib(c),这里有一些参考资料,可以选择移植到任何环境:'What steps do I need to do to port newlib to a new platform?'
答案 3 :(得分:0)
是否可以在不使用任何库文件的情况下编写显示文本的代码?
当然,既然他们也做过了,他们还没有?
您需要将内核连接起来编写类似的低级库,尽管对于每个案例并不是绝对必要的。
是用于定义这些函数的汇编代码吗?
是的,部分地,使用SIMD等和其他聪明的技巧来处理性能关键部件等。