Listing Options [ HP C/iX Reference Manual ] MPE/iX 5.0 Documentation
HP C/iX Reference Manual
Listing Options
Two compiler options are provided to write additional information to the
listing. The -Wc,-m (abbreviated +m) option is used to generate
identifier maps. The -Wc,-o (abbreviated +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, 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 union
char long int unsigned char
double long double unsigned int
enum short int unsigned long
float signed char unsigned short
function struct void
The type qualifiers, const and vol (for volatile), can also appear in the
third column.
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(void)
{
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 -Wc,-o (or +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.
Example
#include <stdio.h>
main(void)
{
int j;
void func1 (int);
void func2 (int);
for (j=0; j<50; j++) {
func1 (j);
func2 (j);
}
}
void func1 (int i)
{
while (i < 50) {
if (!(i % 5))
printf ("%d is divisible by 5\n", i);
i++;
}
}
void func2 (int j)
{
int k, m;
k = j % 10 ? 1 : 0;
if (k) {
m = 23;
k = m * m;
}
}
C O D E O F F S E T S
main "myfile.c"
Line Offset Line Offset Line Offset Line Offset Line Offset
7 8 8 18 9 20
func1 "myfile.c"
Line Offset Line Offset Line Offset Line Offset Line Offset
17 c 18 14 19 24 20 34
func2 "myfile.c"
Line Offset Line Offset Line Offset Line Offset Line Offset
30 4 31 20 32 28 33 30
MPE/iX 5.0 Documentation