欢迎来到天天文库
浏览记录
ID:37322698
大小:344.95 KB
页数:16页
时间:2019-05-21
《C语言进阶-第三讲编译汇编调试》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第三讲编译,汇编,链接凌明trio@seu.edu.cn东南大学国家专用集成电路系统工程技术研究中心www.cnasic.com目录编译、汇编与连接项目中的文件组织项目中文件的依赖关系Make为ARM编写高效的C语言代码基本的C数据类型C循环结构寄存器分配函数调用结构体的安排移植问题www.cnasic.com1编译、汇编与连接www.cnasic.com面向嵌入式系统的软件开发环境(传统的开发环境)软软交叉开件件编辑编译器发环境设设环境DebuggerIDE计计汇编器(调试,跟踪)项目串口,并口,管理liber连接器以太网,US
2、B转换程序仿真器(ICE)烧结程序目标板www.cnasic.com2C源文件汇编源文件makefile.cfile.sfileC编译器file.lstfile.s汇编器errorsLiberfile.o操作系统库标准C库Linkerfile.libOSlibANSIlibfile.xrffile.out调试工具转换工具二进制文件目标系统烧结工具www.cnasic.com编译器和汇编器的作用编译器将C文件转换成为汇编文件汇编器将汇编文件转换成为二进制指令流*.o文件(目标文件)每个目标文件是独立编址的,也就是说每个目标文件的第一
3、条指令都从相同的地址开始存放www.cnasic.com3目标文件的结构低地址TEXT(CODE)执行代码RODATA有初值的全局变量RW或静态变量无初值的全局变量ZI或静态变量ARMCPU高地址www.cnasic.com连接器的作用将多个目标文件或库文件按照各文件中段进行统一编址生成一个完整的统一的地址印象嵌入式系统中一般生成一个绝对地址印象(非PIC)在有MMU的系统中可以为每个任务单独分配一个地址空间www.cnasic.com4连接器的作用file.outfile1.ofile2.ofile3.oRO1ROMBasedR
4、OMBasedRO2RO3RO2RO1RW3LinkRO3RW1RW2ZI3RW1ZI1ZI2RW2RW3RAMBaseRAMBaseZI1ZI2ZI3www.cnasic.com项目中的文件组织www.cnasic.com5一个简单的项目-myprojectFile1.hFile2.hFile3.hIncludeIncludeIncludeFile1.CFile2.CFile3.CCALLCALLFile1.oFile2.oFile3.omylib.libFile1.o依赖于File1.cLinkFile1.hMyProject
5、.out依赖于:File2.hFile1.omyproject.outFile2.oFile3.oMylib.libwww.cnasic.com如何生成myproject?编译File1.C->File1.o编译File2.C->File2.o编译File3.C->File3.o连接File1.o+File2.o+File3.o+mylib.lib问题:1、如果不仅仅是这几个文件,而是上百个文件怎么办?一个一个编译?回答:只要编译修改过的文件就可以了。但是如果我们修改了File2.h,是不是要重新编译File1.C?有没有办法解决
6、这种复杂的相互依赖关系?回答:MAKE文件IDE中的项目管理再问?如果我们修改了File2.C,而没有修改File2.h,是否要重新编译File1.C?www.cnasic.com6MAKE文件MAKE实际上是一个批处理程序,该程序通过解释特定格式的MAKE脚本(MAKE文件),完成一个项目相关文件的编译,汇编与连接MAKE脚本一般描述了整个项目中各个文件的相互依赖关系,MAKE通过调用脚本中指定编译器,汇编器和连接器,按照项目个文件的依赖关系进行处理。常见的MAKE程序:MSnmakeGccmakewww.cnasic.comM
7、AKE文件阅读E:ASIXOSplatform-20030124platformbuilddrballPDA.MAKwww.cnasic.com7IDE中的项目管理现代的IDE环境一般不需要程序员自己编写MAKE脚本,系统引入Project的概念,自动维护文件之间的依赖关系,大大方便了程序员的工作。www.cnasic.com为ARM编写高效的C语言代码www.cnasic.com8编译器相关是一个问题!不同的编译器对于数据类型的约定可能不同Char,short,int,long分别表示什么?不同的编译器在处理函数调用
8、的传参与返回值可能不同不同的编译器在局部变量的处理上可能不同不同的编译器在组织结构体的时候,存储器的布局可能不同不同的编译器在缺省状态下的优化选项可能不同www.cnasic.comARM体系结构中的LDR和STR指令体系结构指令功能PreV4LD
此文档下载收益归作者所有