11.14.2 Near or Far Code
Functions that are near (within a radius of 32 kWords of each other) may
call each other more efficiently than those which are not. If it is known that all
functions in an application are near, then the default -msmall-code
command line option can be used when compiling each module to direct the compiler to use
a more efficient form of the function call.
If this default option is not suitable, then the following alternatives are available:
- It is possible to compile some modules of an application using the -msmall-code command line option. In this case, only function calls in those modules will use a more efficient form of the function call.
- If the
-msmall-code
command-line option has been used, then the compiler may be directed to use the long form of the function call for an individual function by tagging it with thefar
attribute. - Instead of using command-line options, which have module scope, the
compiler may be directed to call individual functions using the near (small) or far
(large) code models by tagging their declarations with the
near
orfar
attribute. - Group locally referent code together by using named sections or keep this code in common translation units.
The linker will produce an error message if the function declared to be near cannot be reached by one of its callers using a more efficient form of the function call.