如何编写最低级别的标准库函数?

时间:2015-05-05 22:28:27

标签: c++

据我所知,大多数编程语言都有标准库。我也理解许多库使用其他库中的函数和方法,并且在创建新库时,程序员可以使用其他库中的现有代码。

我的问题是,最基本的库函数是如何编写的?一般来说,许多其他库,函数或代码使用的函数。例如,将字符写入屏幕的原始函数。这些基础函数是用汇编语言编写的吗?

我是一名相对较新的CS学生,所以如果我没有使用正确的语言,我会道歉。

2 个答案:

答案 0 :(得分:1)

一个动态库(windows中的.dll)就像一个可执行文件(windows中的.exe)实际上两者都是相同的文件格式,PE格式(可移植的可执行文件) 不同的是动态库没有开始"由它自己执行(你通常不会在其中包含一个入口点)

所以动态库就像一个exe(都有代码和数据),对于像user32.dll和kernal32.dll ntdll.dll这样的OS核心库(如果是windows),它们构建为每个可执行文件已经构建(大多数使用c / c ++),无论你的编程平台(.net / native c / assembly)如何,你的程序都必须调用这些库中的函数来连接世界"让我们看一个例子。 当你要求你的c ++程序在屏幕上显示一条消息时,你通常是通过调用c ++标准库中的一个函数来实现的,而c ++标准库又调用了OS函数,而这些函数又调用了硬件驱动程序"知道如何&# 34;在机器的这个特定屏幕上显示消息。

所以如果你想定义你的编程请求将会抛出的层:

  1. 调用c ++标准库中的库中的函数。

  2. 调用用户模式操作系统库。

  3. 调用内核模式操作系统库。

  4. 操作系统调用与输出相关的硬件驱动程序(如屏幕上显示"屏幕上的任何内容等。

  5. 不要将程序集视为可以执行任何操作的语言,您的c ++代码实际上是编译后的汇编/二进制代码 - 除非它是虚拟机,如.net或在顶部需要额外图层的java

    是什么让操作系统库重要,他们只是知道"如何处理操作系统,因为他们知道操作系统数据结构的确切位置。

答案 1 :(得分:1)

在C和C ++语言中,库函数通常用C或C ++编写,然后编译。它还用于测试编译器。

由于性能或空间原因,某些编译器供应商可能使用汇编语言编写库(在使用高级语言编译之后)。

一个典型的例子是memcpy函数。它将以汇编语言编写,以利用处理器的块复制指令。

有些语言使用其他语言编写库函数。例如,Java可以在C中编写它的JVM函数,让它们工作,然后使用汇编语言对它们进行优化。

就访问平台的东西而言,这取决于编译器。有些平台没有屏幕。一些平台要求商店编写编译器代码执行的定制驱动程序(例如嵌入式系统)。某些库函数调用操作系统中的函数。