内核编程语言和环境.pptx_第1页
内核编程语言和环境.pptx_第2页
内核编程语言和环境.pptx_第3页
内核编程语言和环境.pptx_第4页
内核编程语言和环境.pptx_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内核编编程语语言和环环境 1 主要内容 1.as86汇编汇编 器 2.GNU as汇编汇编 3.C语语言程序 4.C与汇编汇编 程序的相互调调用 5.Linux0.12目标标文件格式 6.Make程序和Makefile文件 7.实验实验 2 1. as86汇编汇编 器 pas86汇编汇编 器 pld86链链接器 pas86和ld86由MINIX-386主要开发发者Bruce Evans编编写 pLinux系统统用它来创创建16位的启动动引导导扇区程 序boot/bootsect.s和实实模式下初始设设置程序 boot/setup.s的二进进制执执行代码码 p该编译该编译 器语语法与GNU as汇编编译汇编编译 器语语法不兼 容 3 示例程序 4 示例程序(续续) p赋值语赋值语 句: p伪伪操作符语语句:伪伪操作码码和0个或多个操作数组组成 p每个操作码码有一个点字符(表示编译过编译过 程中的位置计计数器)开始 p标标号:标识标识 符后跟一冒号 5 as86汇编语汇编语 言语语法 p命令行基本格式: as 选项选项 o objfile srcfile pboot.s编译连编译连 接过过程 nas86 -0 a o boot.o boot.s nls86 -0 s o boot boot.o ndd bs=32 if=boot of=/dev/fd0 skip=1 p注意:最后生成的boot程序不是512B,而是长长 了32B(MINIX可执执行文件的头结头结 构),必须须 手工去掉这这32B。 6 2. GNU as汇编汇编 p内核其余部分(除bootsect.s和setup.s)外 其余所有汇编语汇编语 言程序(包括C语语言产产生的汇编汇编 程序)均使用gas来编译编译 ,并与C语语言程序编译编译 产产生的模块链块链 接。 p在编译编译 C语语言时时,GNU gcc汇编汇编 器会首先输输出 一个作为为中间结间结 果的as汇编语汇编语 言文件,然后 gcc会调调用as汇编汇编 器把这这个临时汇编语临时汇编语 言程序 编译编译 成目标标文件。 p实际实际 上,as汇编汇编 器最初是专门专门 用于汇编汇编 gcc产产 生的中间汇编语间汇编语 言程序的,并非作为为一个独立的 汇编汇编 器使用。 7 as汇编语汇编语 法示例 pHead.s含有32位启动动代码码 .text .global _idt,_gdt,_pg_dir,_tmp_floppy_area _pg_dir: st32artup_32: mov1 $0x10, %eax mov %ax,%ds 8 关于实实模式和保护护模式 p第一款微处处理器芯片4004(Intel)是一个4位微处处理 器。 p第二款8位处处理器8080,有1个主累加器(寄存器A)和 6个次累加器(寄存器B,C,D,E,H和L)等,用来访问访问 16 位的内存地址,也就是说说8080可访问访问 到64K内的地址空 间间。(还还没有段的概念,访问访问 内存都要通过绝对过绝对 地址, 因此程序中的地址必须进须进 行硬编码编码 ) p第三款16位处处理器8086,标标志着Intel X86王朝的开 始,因为为8086处处理器引入了一个重要概念段。 9 关于实实模式和保护护模式(续续) p8086处处理器的寻寻址目标标是 1M大的内存空间间,其地址总总 线扩线扩 展到了20位,但是其数据总线总线 却只有16位。为为了支 持分段,Intel在8086 CPU中设设置了四个段寄存器: CS、DS、SS和ES,分别别用于可执执行代码码段、数据段、 堆栈栈段及其他段。每个段寄存器都是16位的,对应对应 于地 址总线总线 中的高16位。即内存总线总线 中的高12位与段寄存器 中的16位相加,而低4位保留不变变,这样这样 就形成一个20 位的实际实际 地址,实现实现 了从16位内存地址到20位实际实际 地 址的转换转换 ,或者叫“映射”。(实实模式) p80286处处理器1982年问问世,其地址总线总线 位数增加到了 24位,因此可以访问访问 到16M的内存空间间。更重要的是从 此开始引进进了一个全新理念保护护模式。这这种模式下内 存段的访问访问 受到了限制。访问访问 内存时时不能直接从段寄存 器中获获得段的起始地址了,而需要经过额经过额 外转换转换 和检检 查查。 10 关于实实模式和保护护模式(续续) p80386是32位CPU,地址址总线总线 与数据总线宽总线宽 度一致 ,都是32位,因此其寻寻址能力达到4GB。 p80386以后,Intel的CPU经历经历 了80486、Pentium 、PentiumII、PentiumIII等型号,虽虽然它们们在速度 上提高了好几个数量级级,功能上也有不少改进进,但基本上 属于同一种系统结统结 构的改进进与加强,而无本质质的变变化, 所以我们们把80386以后的处处理器统统称为为IA32(32 Bit Intel Architecture)。 11 3. C语语言程序 pC程序编译过编译过 程如下: pcpp对对C语语言程序中指示符和宏进进行替换处换处 理 12 gcc用法示例 p编译编译 hello.c程序,生成执执行文件hello ngcc o hello hello.c p编译编译 hello.c程序,生成对应汇编对应汇编 程序hello.s ngcc S o hello.s hello.c p编译编译 hello.c程序,生成对应对应 目标标文件hello.o 而不链链接 ngcc c o hello.o hello.c 13 嵌入汇编汇编 (内联汇编联汇编 ) p内核C语语言程序中嵌入汇编语汇编语 句 p通常使用汇编语汇编语 句最方便的方式是把他们们放在一 个宏内 14 嵌入汇编汇编 示例 15 4. C与汇编汇编 程序的相互调调用 p汇编汇编 中调调用C函数比较较“自由”,只要在栈栈中适当 位置的内容就都可以作为为参数供C函数使用。 16 4. C与汇编汇编 程序的相互调调用(续续) p在C程序中调调用汇编汇编 。如果调调用的汇编语汇编语 言程序 比较较短,可以直接在C程序中使用内联汇编语联汇编语 句。 17 汇编汇编 程序 callee.s C程序caller.c 5. Linux0.12目标标文件格式 pLinux0.12使用了两种编译编译 器 nas86、ld86:编译链编译链 接运行在实实地址模式下的16位 内核引导导扇区程序bootsect.S和设设置程序setup.S ngas、gcc、gld:其它 18 6. Make程序和Makefile文件 pmake程序:自动编译动编译 所有内核代码码文件,要使 用make工具程序,必须编须编 写一个名称为为 Makefile(或makefile)的文件 pMakefile文件:主要包含一些make要遵守的 执执行规则规则 和要求执执行的命令等内容,用于告诉诉 make需要对对所涉及的源文件做哪些操作和处处理 以生成相应应的目标标文件 19 Makefile文件示例 1.# Makefile for the simple example kernel. 2.AS86=as86 -0 -a 3.LD86=ld86 -0 4.AS=gas 5.LD=gld 6.LDFLAGS=-s -x -M 7.all:Image 8.Image: boot system 9.dd bs=32 if=boot of=Image skip=1 10.dd bs=512 if=system of=Image skip=2 seek=1 11.sync 20 Makefile文件示例(续续) 12.disk: Image 13.dd bs=8192 if=Image of=/dev/fd0 14.sync;sync;sync 15.head.o: head.s 16.system: head.o 17.$(LD) $(LDFLAGS) head.o -o system System.map 18.boot:boot.s 19.$(AS86) -o boot.o boot.s 20.$(LD86) -s -o boot boot.o 21.clean: 22.rm -f Image System.map core boot *.o system 21 Makefile文件中的规则规则 target(目标标):prerequisites(先决条件) command(命令) p注意:每个命令之前键键入一个制表符(Tab键键) 22 隐隐含规则规则 p根据目标标文件的命名形式使用”cc -c”命令根据 相应应的.c文件更新对应对应 的.o文件。 p同时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论