Two compiler options are provided to write additional information
to the listing. The +m
option is used to generate identifier maps. The +o
option is used to generate code offsets.
Identifier Maps  | 
  | 
When the +m
option is specified, the compiler produces a series of identifier
maps, grouped by function. The map shows the declared identifiers,
their storage class, type, and address or constant value.
The first column of the map lists, in alphabetical order,
the initial 20 characters of all the identifiers declared in the
function. Member names of structures and unions appear indented
under the structure or union name.
The second column displays the storage class of each identifier.
The compiler distinguishes the following storage classes:
auto           external definition          static constant       member                       typedef external       register  | 
The third column shows the type of the identifier. The types
include:
array          int                unsigned char char           long int           unsigned int double         long long int      unsigned long enum           short int          unsigned long long float          struct             unsigned short function       union              void  | 
The fourth column indicates the relative register location
of an identifier. Members of a union type are in the form W @ B,
where W is the
byte offset and B
is the bit offset within the word. Both offsets are given in hexadecimal
notation.
Example
main() {    enum colors {red, green, blue} this_color;    struct SS {       char           *name;       char           sex;       int            birthdate;       int            ssn;       float          gpa;       struct SS      *previous;       } pupil_rec;      union UU {       int        flag;       float      average;       } datum;      struct SS second_pupil;   this_color = red; pupil_rec.sex = 'm'; datum.flag = 1; second_pupil.gpa = 3.72;   }  | 
       G L O B A L    I D E N T I F I E R    M A P   Identifier         Class       Type              Address          -                     -  main              ext def     int ()            main  | 
         L O C A L    I D E N T I F I E R    M A P S                                 main       Identifier    Class       Type              Address         -                     -     blue          const       enum colors       2     datum         auto        union UU          SP-64       flag        member      int                 0x0 @ 0x0       average     member      float               0x0 @ 0x0     green         const       enum colors       1     pupil_rec     auto        struct SS         SP-60       name        member      char  *             0x0 @ 0x0       sex         member      char                0x4 @ 0x0       birthdate   member      int                 0x8 @ 0x0       ssn         member      int                 0xc @ 0x0       gpa         member      float               0x10 @ 0x0       previous    member      struct  *           0x14 @ 0x0     red           const       enum colors       0     second_pupil  auto        struct SS         SP-88       name        member      char  *             0x0 @ 0x0       sex         member      char                0x4 @ 0x0       birthdate   member      int                 0x8 @ 0x0       ssn         member      int                 0xc @ 0x0       gpa         member      float               0x10 @ 0x0       previous    member      struct  *           0x14 @ 0x0     this_color    auto        enum colors       SP-36  | 
Code Offsets  | 
  | 
When the +o
option is specified, the compiler produces a series of the code
offsets for each executable statement, grouped by function. Source
line numbers are given in decimal notation followed by the associated
code address specified in hexadecimal notation. The code address
is relative to the beginning of the function.