Keil C51编译器在编译程序时,会生成一个扩展名为LST的列表文件,也被称为listing file。
这个文件包含了有关编译过程的丰富信息,该文件由多个段组成,其中Symbol Listing 和 Module Information两个段对于用户分析调试程序尤其有用,下面按照各个段在 listing file中出现的先后顺序加以说明:
一、页头段(Page Header)
每个lst文件都有一个包含了编译器版本号、源文件名称、日期、时间、页号的头部。示例:
C51 COMPILER V7.20 MEASURE 10/01/2004 14:05:05 PAGE 1
二、命令段(Command Line)
命令段展示了 Keil IDE 调用C51编译器时传递的所有命令, 示例:
C51 COMPILER V7.20, COMPILATION OF MODULE MEASURE OBJECT MODULE PLACED IN Measure.OBJ COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Measure.c HOLD(128, -0,0) OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECT -EXTEND CODE LISTINCLUDE SYMBOLS
三、源码段(Source Code)
源码段展示了每行源程序及其行号。
COND指令,可以控制条件编译代码(#if 作用范围内的代码)被源码段列出,NOCOND指令,可以控制条件编译代码不被源码段列出。
用户可以使用 LISTINCLUDE 指令,让源码段显示 #include 所包含的文件内容,默认情况下,#include包含的文件内容不被显示。
源码段示例:
53 char code ERROR [] = "\n*** ERROR: %s\n"; 54 55 #define PERIOD -250 56 #define WRONGINDEX 0xffff 57 58 59 /* The following function is called from