我的问题可能有些奇怪,但我会尽力解释。
看着Linux内核所用的语言,我只找到了C和汇编语言,即使我读了一篇文章说“Unix的第二次迭代完全是用C写的”。
我认为那篇文章是误导性的,但当我说内核有汇编代码时,我又遇到了两个问题:
- 内核中有哪些汇编文件以及它们的作用是什么?
- 汇编是与特定架构相关的,那么Linux如何安装在多种CPU架构上呢?
如果Linux内核真的完全是用C写的,那么它怎么能得到编译所需的GCC呢?
我执行了一个完整的find / -name *.s
命令,只找到了一个汇编文件(asm-offset.s),在/usr/src/linux-headers-`uname -r
/路径下。
不知道这是否有助于GCC正常工作,那么如果Linux没有使用汇编语言,它如何工作,如果它确实使用了汇编语言,那么它在哪里,如何保持稳定并且不依赖于架构?
提前感谢。
arch
目录下,对于 x86 架构,它们的扩展名为.S
(大写)。例如,以下链接提供了在 x86 架构上实现 VDSO 的汇编源代码:http://lxr.free-electrons.com/source/arch/x86/vdso/vdso.S - amdn*.S
(大写),因为那些也是汇编文件。C代码还包含一些内联汇编和其他非标准的C语法,因此需要GCC编译器。 - Jester