Zilog Z8F0130 User Manual
Page 109

UM013037-1212
Project Menu
Zilog Developer Studio II – Z8 Encore!
User Manual
85
top-level routines to parse a format string are not linked into the project, and only those
lower level routines that are actually used are linked in, rather than every routine that
could be used by a call to
printf
. The code size of each routine that calls
printf()
or
sprintf()
is slightly larger than if the
Generate Printfs Inline
checkbox is deselected,
but this is more than offset by the significant reduction in the size of library functions that
are linked to your application.
To reduce overall code size by selecting this checkbox, the following conditions are neces-
sary:
•
All calls to
printf()
and
sprintf()
must use string literals, rather than
char*
variables, as parameters. For example, the following code allows the compiler to
reduce the code size:
sprintf ("Timer will be reset in %d seconds", reset_time);
But code such as the following results in larger code:
char * timerWarningMessage;
...
sprintf (timerWarningMessage, reset_time);
•
The
vprintf()
and
vsprintf()
functions cannot be used, even if the format string
is a string literal.
If the
Generate Printfs Inline
checkbox is selected and these conditions are not met, the
compiler warns you that the code size cannot be reduced. In this case, the compiler gener-
ates correct code, and the execution is significantly faster than with normal
printf
calls.
However, there is a net increase in code size because the generated inline calls to lower
level functions require more space with no compensating savings from removing the top-
level functions.
In addition, an application that makes over 100 separate calls of
printf
or
sprintf
might result in larger code size with the
Generate Printfs Inline
checkbox selected
because of the cumulative effect of all of the inline calls. The compiler cannot warn about
this situation. If in doubt, simply compile the application both ways and compare the
resulting code sizes.
The
Generate Printfs Inline
checkbox is selected by default.
Bit Field Packing
This drop-down list box can be set to
Backward Compatible
,
Most Compact
, or
Normal
.
The
Most Compact
setting, which is the default for new projects, packs the bit-fields as
tightly as possible. This packing saves data space in your application. The
Normal
setting
preserves the declared type of all of the individual bit-fields. That is, in an example such
as:
typedef struct {
char bf1:6;
- Z8F0131 Z8F0230 Z8F0231 Z8F0430 Z8F0431 Z8F043A Z8F0830 Z8F0831 Z8F083A Z8F1232 Z8F1233 Z8F0113 Z8F011A Z8F0123 Z8F012A Z8F0213 Z8F021A Z8F0223 Z8F022A Z8F0411 Z8F0412 Z8F0413 Z8F041A Z8F0421 Z8F0422 Z8F0423 Z8F042A Z8F0811 Z8F0812 Z8F0813 Z8F081A Z8F0821 Z8F0822 Z8F0823 Z8F082A Z8F0880 Z8F1621 Z8F1622 Z8F1680 Z8F1681 Z8F1682 Z8F2421 Z8F2422 Z8F2480 Z8F3221 Z8F3222 Z8F3281 Z8F3282 Z8F4821 Z8F4822 Z8F4823 Z8F6081 Z8F6082 Z8F6421 Z8F6422 Z8F6423 Z8F6481 Z8F6482 Z8FS021A ZMOT1AHH Z8FS040B ZMOT0BHH ZMOT0BSB Z8FMC04 Z8FMC08 Z8FMC16