来自:蓝森林免费软件
Chapter 2
Software Basic( 软件基础 )
Linux Kernel核心中文手册
来自:蓝森林免费软件
Chapter 2
Software Basic( 软件基础 )
程式是用于执行特定任务的电脑指令组合。程式能够用汇编语言,一种很低级的电脑语言来编写,也能够使用和机器无关的高级语言,比如 C 语言编写。操作系统是个特别的程式,允许用户通过他运行应用程式,比如电子表和文字处理等等。本章介绍了基本的编程原理,并简介操作系统的目的和功能。
2.1 Computer Languages( 电脑语言 )
2.1.1. 汇编语言
CPU 从内存中读取和执行的指令对于人类来讲无法理解。他们是机器代码,精确的告诉电脑要做什么。比如十六进制数 0x89E5 ,是 Intel 80486 的指令,将寄存器 ESP 的内容拷贝到寄存器 EBP 中。早期电脑中最初的软件工具之一是汇编程式,他读入人类能够阅读的源文档,将其装配成机器代码。汇编语言明确地处理对寄存器和对数据的操作,而这种操作对于特定的微处理器而言是特别的。 Intel X86 微处理器的汇编语言和 Alpha AXP 微处理器的汇编语言完全不同。以下 Alpha AXP 汇编代码演示了程式能够执行的操作类型:
Ldr r16, (r15) ; 第一行
Ldr r17, 4(r15) ; 第二行
Beq r16,r17,100; 第三行
Str r17, (r15); 第四行
100: ; 第五行
第一条语句(第一行)将寄存器 15 指定的地址中的内容加载到寄存器 16 中。第二条指令将紧接着的内存中的内容加载到寄存器 17 中。第三行比较寄存器 16 和寄存器 17 ,假如相等,分支到标号 100 ,否则,继续执行第四行,将寄存器 17 的内容存到内存中。假如内存中的数据相同,就不必存储数据。编写汇编级的程式需要技巧而且十分冗长,容易出错。 Linux 系统的核心很少的一部分是用汇编语言编写,而这些部分之所以使用汇编语言只是为了提高效率,并且和具体的微处理器相关。
2.1.2 The C Programming Language and Compiler (C 语言和编译器 )
使用汇编语言编写大型程式十分困难,消耗时间,容易出错而且生成的程式不能移植,只能束缚在特定的处理器家族。更好的选择是使用和机器无关的语言,例如 C 。 C 允许您用逻辑算法描述程式和要处理的数据。被称为编译程式( compiler )的特别程式读入 C 程式,并将他转换为汇编语言,进而产生机器相关的代码。好的编译器生成的汇编指令能够和好的汇编程式员编写的程式效率接近。大部分 Linux 核心是用 C 语言编写的。以下的 C 片断:
if (x != y)
x = y;
执行了和前面示例中汇编代码完全相同的操作。假如变量 x 的内容和变量 y 的内容不相同,变量 y 的内容被拷贝到变量 x 。 C 代码用例程( routine )进行组合,每一个例程执行一项任务。例程能够返回 C 所支持的任意的数值或数据类型。大型程式比如 Linux 核心分别由许多的 C 语言模块组成,每一个模块有自己的例程和数据结构。这些 C 源代码模块一起构成了逻辑功能比如文档系统的处理代码。
C 支持多种类型的变量。一个变量是内存中的特定位置,可用符号名引用。上述的 C 片断中, x 和 y 引用了内存中的位置。程式员无需关心变量在内存中的具体位置,这是连接程式(下述)必须处理的。一些变量包含不同的数据例如整数、浮点数等和另一些则包含指针。
指针是包含其他数据在内存中的地址的变量。假设一个变量 x ,位于内存地址 0x80010000 , 您可能有一个指针 px ,指向 x 。 Px 可能位于地址 0x80010030 。 Px 的值则是变量 x 的地址, 0x80010000 。
C 允许您将相关的变量集合成为结构。例如:
Struct {
Int I;
Char b;
} my_struct;
是个叫做 my_struct 的数据结构,包括两个元素:一个整数( 32 位) I 和一个字符( 8 位数据) b 。
2.1.3 Linkers (连接程式)
连接程式将几个目标模块和库文档连接在一起成为一个单独的完整程式。目标模块是汇编程式或编译程式的机器码输出,他包括机器码、数据和供连接程式使用的连接信息。比如:一个目标模块可能包括程式的任何数据库功能,而另一个目标模块则包括处理命令行参数的函数。连接程式确定目标模块之间的引用关系,即确定一个模块所引用的例程和数据在另一个模块中的实际位置。 Linux 核心是由多个目标模块连接而成的单独的大程式。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




