第十章语言编译系统和运行系统ppt课件.ppt

第十章语言编译系统和运行系统ppt课件.ppt

ID:58673379

大小:371.50 KB

页数:45页

时间:2020-10-05

第十章语言编译系统和运行系统ppt课件.ppt_第1页
第十章语言编译系统和运行系统ppt课件.ppt_第2页
第十章语言编译系统和运行系统ppt课件.ppt_第3页
第十章语言编译系统和运行系统ppt课件.ppt_第4页
第十章语言编译系统和运行系统ppt课件.ppt_第5页
资源描述:

《第十章语言编译系统和运行系统ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十章语言编译系统和运行系统本章内容C语言编译系统预处理器、汇编器、连接器目标文件的格式、静态库、动态连接Java运行系统掌握从源程序到可执行目标程序的实际处理过程对实际参与软件开发是直接有用的10.1C语言编译系统预处理器源程序修改后的源程序可重定位的目标程序可重定位的目标文件库编译器汇编器汇编程序连接器可执行的目标程序C源程序可以分成若干个模块分别进行预处理、编译和汇编、形成可重定位的目标文件目标文件和必要的库文件连接成一个可执行的目标文件gcc和cc是编译驱动程序的名字10.1C语言编译系统main.c(1)#if1(2)intbuf[2];(3)#else(4

2、)intbuf[2]={10,20};(5)#endif(6)voidswap();(7)#defineAbuf[0](8)intmain()(9){(10)scanf("%d,%d",buf,buf+1);(11)swap();(12)printf("%d,%d",A,buf[1]);(13)return0;(14)}swap.c(1)externintbuf[2];(2)int*bufp0=buf;(3)int*bufp1;(4)voidswap()(5){(6)inttemp;(7)bufp1=buf+1;(8)temp=*bufp0;(9)*bufp0=*bu

3、fp1;(10)*bufp1=temp;(11)}10.1C语言编译系统10.1.1预处理器gcc首先调用预处理器cpp,将源程序文件翻译成一个ASCII中间文件,它是经修改后的源程序cpp实现以下功能文件包含宏展开条件编译10.1C语言编译系统main.c(1)#if1(2)intbuf[2];(3)#else(4)intbuf[2]={10,20};(5)#endif(6)voidswap();(7)#defineAbuf[0](8)intmain()(9){(10)scanf("%d,%d",buf,buf+1);(11)swap();(12)printf("%

4、d,%d",A,buf[1]);(13)return0;(14)}main.i(1)#1“main.c”(2)(3)intbuf[2];(4)(5)(6)(7)voidswap();(8)(9)intmain()(10){(11)scanf("%d,%d",buf,buf+1);(12)swap();(13)printf("%d,%d",buf[0],…);(14)return0;(15)}10.1C语言编译系统10.1.2汇编器GCC系统的编译器cc1产生汇编代码最简单的汇编器对输入进行两遍扫描一遍扫描完成汇编代码到可重定位目标代码的翻译也是完全可能的用gccSm

5、ain.c可以得到汇编文件main.s用asomain.omain.s可以将main.s汇编成可重定位目标文件main.o10.1C语言编译系统10.1.3连接器目标模块或目标文件的形式可重定位的目标文件可执行的目标文件共享目标文件一种特殊的可重定位目标文件在装入程序或运行程序时,动态地装入到内存并连接10.1C语言编译系统连接是一个收集、组织程序所需的不同代码和数据的过程,以便程序能被装入内存并被执行连接的时机编译时装入时运行时静态连接器动态连接器10.1C语言编译系统一个重定位模块M可能定义和引用的符号全局符号指那些在模块M中定义,可以被其它模块引用的符号局部符

6、号指那些在模块M中定义,且只能在本模块中引用的符号外部符号指那些由模块M引用并由其它模块定义符号符号解析识别各个目标模块中定义和引用的符号,为每一个符号引用确定它所关联的一个同名符号的定义重定位10.1C语言编译系统10.1.4目标文件的格式目标文件格式随系统不同而不同介绍Unix的ELF(ExecutableandLinkableFormat)格式Linux、SystemVUnix的后期版本、BSDUnix变体和SunSolaris,都使用Unix的ELF格式10.1C语言编译系统ELF头描述了字的大小产生此文件的系统的字节次序目标文件的类型机器类型节头表的位置其它

7、ELF头.text.rodata.data.bss.symtab.rel.text.rel.data.debug.line.strtab节头表0描述目标文件的节节10.1C语言编译系统节头表目标文件中各节的位置和大小处于目标文件的末尾ELF头.text.rodata.data.bss.symtab.rel.text.rel.data.debug.line.strtab节头表0描述目标文件的节节10.1C语言编译系统.text节被编译程序的机器代码.rodata节诸如printf语句中的格式串和switch语句的跳转表等只读数据.data节已初始化的全

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。