- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 2 章 基础知识
第 2 章
基础知识
现在我们就可以 动手打造 这 款 属于我们自己的操作系统了。 当然,在
这 之前 我 们 还 需 要 将 开 发 操 作 系 统 所 需 的 必 备 基 础知识 说 清 楚 。众 所 周
知 ,操作系统是一门偏 难 的综 合 性学 科 。尤其在亲 自实践 的过程中,对于
编程语 言 、程序算法、硬 件原理等 相关 知识 ,都需要开发者有相当 深入的
了解。
因此,无论读者从事的是基 于 PC 的程序开发还是基 于应用层 的嵌入式
开发,我们的传统知识结构可能都不足 以实现一个完整 的操作系统,这可能
将会成为我们开发属于自己的操作系统的一个 障碍 。为了能够扫除这些 障
碍 ,我们有必要对一些知识 和技巧进行一定程度 的补充 。
本章正是以此为 目的,虽不能对开发操作系统所必备 的所有知识进行深
入并且全 面的讲解,但 至少会保证将一些 重点或易被忽略 的地方拿 出来聊一
聊 。这些内容涵盖 了链 接和库 、基 于 ARM 的汇编程序设计、汇编与 C 语 言
间的混合 编程、过程调用标准 等。
这些话题都跟程序的编写直接相关 ,在后续章节的学习过程中都会反 复
讲 到。我们会介绍几个实 际 的编程例子 ,确保读者在读 完本章 后 ,至少能
够编写并运行一些最基本的程序,为操作系统的开发 打下基础 。
如果读者对这些知识 已有所了解,可以跳过本章,直接学习后边 的内容。
2.1 使用 C 语言写第一段程序
我们不如从每个程序员都 曾写过的“hello world ”切入,来 尝试编写能
18
第 2 章 基础知识
在虚拟环境中运行的第一段代码,看看操作系统的开发过程究竟是怎样的。
首先请 打开 本编辑器,输入以下内容。
代码 2-1
#define UFCON0 ((volatile unsigned int *)(0)
void helloworld(void){
const char *p= "helloworld\n ";
while(*p){
*UFCON0=*p++;
};
while(1);
}
程序 简单到无须介绍,这里 只需要说明一 点 ,物理地址 0代
表 的是 s3c2410 的 串 口 FIFO 寄存 器地址 ,简单地说,就是写 向该地址 的数
据 都 将 会 通 过 串 口 发 送 给 另 一 端 。 这 段 程 序 只 是 串 行 的 将 字 符 串
“helloworld ”依 次送给 串 口 FIFO 寄存 器。我们将以上内容保存成 件,命
名 为“helloworld.c ”。
接下来让 我们尝试编译这段程序,在终端里运行如下命令 。
命令 2-1
arm-elf-gcc -O2 - c helloworld.c
编译过程中,我们使用了一个优化参数 -O ,这样最终生成的代码将由编
译器 视情况优化 ,而数字 2 则代 表 了一个优化级别,数 字越高 ,优化程度越
深,但同时带来的不 确定性也越 多。
目前我们 只能将这段代码首先编译生成 目标 件,而不能直接生成可执
行 件,原因很简单,因为我们的程序 当 中没有 main 函数。也就是说,编
译器找不到程序的运行入 口,在链 接过程中便会 报错 。那么是不是说凡是 C
代码,想要生成可执行程序并且成 功运行,就必须要有 main 函数 呢?
不是。这个答 案和我们理解的传统 C 语 言程序有些出入,初 学者也许
不能接受 。但事实是
文档评论(0)