PIC 单片机 C 语言编程简介(3)
%C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/11.jpg" src="file:///F:/data/%C3%83%C2%8F%C3%83%C2%82%C3%83%C2%94%C3%83%C2%98/PIC%C3%82%C2%B5%C3%82%C2%A5%C3%83%C2%86%C3%82%C2%AC%C3%82%C2%BB%C3%83%C2%BAC%C3%83%C2%93%C3%83%C2%AF%C3%83%C2%91%C3%83%C2%94%C3%82%C2%B1%C3%83%C2%A0%3Cwbr%3E%C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/11.jpg" />%C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/11.jpg" src="file:///F:/data/%C3%83%C2%8F%C3%83%C2%82%C3%83%C2%94%C3%83%C2%98/PIC%C3%82%C2%B5%C3%82%C2%A5%C3%83%C2%86%C3%82%C2%AC%C3%82%C2%BB%C3%83%C2%BAC%C3%83%C2%93%C3%83%C2%AF%C3%83%C2%91%C3%83%C2%94%C3%82%C2%B1%C3%83%C2%A0%3Cwbr%3E%C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/11.jpg" />
(A)常用选项
不会因为使用优化从而使生成的程序出现错误。碰到的一些问题也基本都是用户编写的原程
序有漏洞所导致,例如一些变量应该是 volatile 型但编程员没有明确定义,在优化前程序可
以正常运行,一旦使用优化,程序运行就出现异常。显然,把出现的这些问题归罪到编译器
是毫无道理的。
使用优化后可能对原程序级的调试带来一些不便之处。因 PICC 可能会重组编译后的代
码,例如多处重复的代码可能会改成同一个子程序调用以节约程序空间,这样在调试过程中
跟踪原程序时可能会出现程序乱跳的现象,这基本是正常的。若为了强调更直观的代码调试
过程,你可以将优化级别降低甚至关闭所有优化功能,这样调试时程序的运行就可以按部就
班了。
C 编译器的高级选项设定基本都是针对诊断信息输出的,和生成的代码无关。用得相对
较多的选项有:
&O1540;
中列出了每一行
条
题的辅助手段。如果你怀疑编译器生成的代码有错误,不妨先产生对应的汇编列表
文件,看看在优化前一条 C 语句被编译后的汇编码到底是什么。
&O1540;
(*.as),此时将不生成目标文件,也不进行最后的连接定位。这一选项在 C 和汇
编混合编程时特别有用。通过解读 C 程序对应的汇编指令,可以掌握 C 程序中存
取变量的具体方法,然后用在自己编写的汇编指令中。我们将在稍后专门做介绍。
11.8.5
连接器 PICC Linker 的选项基本不用作太多的改变,在图 11-6 的对话框中显示了可设定的各类
项目。其中有两项有用的信息输出可以考虑加以利用:
&O1540;
序用到的变量的具体物理地址;所有函数的入口地址;函数相互之间调用的层次关系和深度等。这
些信息对于程序的调试将非常有用。此文件将以扩展名“*.map”的形式存放在同一个项目路径
下,需要时可以用任何文本编辑器打开观察。
%C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/13.jpg" src="file:///F:/data/%C3%83%C2%8F%C3%83%C2%82%C3%83%C2%94%C3%83%C2%98/PIC%C3%82%C2%B5%C3%82%C2%A5%C3%83%C2%86%C3%82%C2%AC%C3%82%C2%BB%C3%83%C2%BAC%C3%83%C2%93%C3%83%C2%AF%C3%83%C2%91%C3%83%C2%94%C3%82%C2%B1%C3%83%C2%A0%3Cwbr%3E%C3%82%C2%B3%C3%83%C2%8C%C3%82%C2%BD%C3%83%C2%8C%C3%82%C2%B3%C3%83%C2%8C.files/13.jpg" />
图 11-6
&O1540;
了解到程序空间和数据存储器空间资源分配的细节。下面列举了在一个项目编译后实际的内存使用
信息,为方便理解笔者用“//”添加了一些注释:
Psect Usage Map:
Psect
----------|------------------------------|--------------------
powerup
intentry
intcode
intret
PIC单片机C语言编 相关文章:
- PIC单片机C语言编程教程(1)(11-22)
- PIC 单片机 C 语言编程简介(2)(11-22)
- PIC 单片机 C 语言编程简介(4)(11-22)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)