欢迎来到天天文库
浏览记录
ID:51438868
大小:38.00 KB
页数:6页
时间:2020-03-24
《keil c51 中文教程(转载)3.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、作者: 来源于: 发布时间:2007-3-2813:52:00C51优化的C语言交叉编译器 KeilC51交叉编译器是一个基于ANSIC标准的针对8051系列MCU的C编译器,生成的可执行代码快速、紧凑,在运行效率和速度上可以和汇编程序得到的代码相媲美。n 和汇编语言相比,用C语言这样的高级语言有很多优势,比如:n 对处理器的指令集不必了解,8051CPU的基本结构可以了解,但不是必须的。n 寄存器的分配以及各种变量和数据的寻址都由编译器完成。n 程序拥有了正式的结构(由C语言带来的),并且能被分成多个单独的子函
2、数。这使整个应用系统的结构变得清晰,同时让源代码变得可重复使用。n 选择特定的操作符来操作变量的能力提高了源代码的可读性。n 可以运用和人的思维很接近的词汇和算法表达式。n 编写程序和调试程序的时间得到很大程度的缩短。n C运行连接库包含一些标准的子程序,如:格式化输出,数字转换,浮点运算。n 由于程序的模块结构技术,使得现有的程序段可以很容易的包含到新的程序中去。n ANSI标准的C语言是一种丰常方便的,获得广泛应用的,在绝大部分系统中都能够很容易得到的语言。 因此,如果需要,现有的
3、程序可以很快地移植到其他的处理器上,节省投资。和汇编语言的接口 你可以很容易在C程序中调用汇编程序,反之依然。函数参数通过CPU寄存器传递,或使用NOREGPARMS参数指示编译器通过固定的存储器传递。从函数返回的值总是通过CPU寄存器传递。除了直接产生目标代码外,你还可以用SRC编译参数指示编译器产生汇编源代码文件(供A51 汇编器使用)。例如下面的C语言源代码: unsignedintasmfunc1(unsignedintarg) { return(1+arg); } 用SRC指示
4、C51编译器编译时产生以下汇编文件: ?PR?_asmfunc1?ASM1 SEGMENTCODE PUBLIC asmfunc1 RSEG ?PR?_asmfunc1?ASM1 USING0 asmfunc1: ;----Variable'arg?00'assignedtoRegister'R6/R7'---- MOVA,R7 ;loadLSB
5、oftheint ADDA,#01H ;add1 MOVR7,A ;putitbackintoR7 CLRA ADDCA,R6 ;addcarry&R6 MOVR6,A ?C0001: RET ;returnresultinR6/R7
6、 你可以用#pragmaasm和#pragmaendasm预处理指示器来在你的C语言程序中插入汇编指令。和PL/M-51的接口 Intel的PL/M-51是一种流行的编程语言,在很多方面和C语言类似。你很容易就可以将C程序和PL/M-51程序联接起来。 在你用alien声明PL/M-51函数后,你就可以从C语言中调用它们。所有在PL/M-51模块中定义的全局变量都可以在C语言程序中使用。例如: externaliencharplm_func(
7、int,char); PL/M-51编译器和KeilSoftware工具都产生OMF51格式的目标文件。连接程序使用OMF51文件来处理外部字符变量,而不管它们在什么地方声明和使用。代码优化 C51是一个杰出的优化编译器,它通过很多步骤以确保产生的代码是最有效率的(最小和/或最快)。编译器通过分析初步的代码 产生最终的最有效率的代码序列,以此来保证你的C语言程序占用最少空间的同时运行的快而有效。 C51编译器提供9个优
此文档下载收益归作者所有