# Vault 7: Projects

This publication series is about specific projects related to the Vault 7 main publication.

### Protego

# MPLAB XC16 C-Compiler

- 1
- 2
…
- 53
- 54
- 55
- 56
- 57
…
- 365
- 366

XC16 Toolchain and MPLAB X IDE
 2012-2013 Microchip Technology Inc. DS50002071C-page 55
3.5.4 xc16-ld (16-Bit Linker)
Put constants into auxil-
iary flash
When combined with -mconst-in-code, put constants
into auxiliary Flash.
-mconst-in-auxflash
Put char vars into near
data space
Place char variables into near data space, regardless of
memory model.
-mnear-chars
Allow arrays larger than
32K
Allow arrays that are larger than 32K, regardless of mem-
ory model.
-menable-large-arrays
Aggregate data model Use aggregate data model. -mlarge-aggregate
TABLE 3-6: MEMORY MODEL CATEGORY (CONTINUED)
Option Description Command Line
TABLE 3-7: OPTIMIZATION CATEGORY
Option Description Command Line
Optimization Level Select an optimization level. Your compiler edition may
support only some optimizations. Equivalent to -On
option, where n is an option below:
 0 - Do not optimize.The compilers goal is to reduce
the cost of compilation and to make debugging pro-
duce the expected results.
 1 - Optimize. Optimizing compilation takes somewhat
longer, and a lot more host memory for a large func-
tion. The compiler tries to reduce code size and exe-
cution time.
 2 - Optimize even more. The compiler performs
nearly all supported optimizations that do not involve
a space-speed trade-off.
 3 - Optimize yet more favoring speed (superset of
O2).
 s - Optimize yet more favoring size (superset of O2).
-On
Unroll loops Check to perform the optimization of loop unrolling. This
is only done for loops whose number of iterations can be
determined at compile time or run time.
Uncheck to not unroll loops.
-funroll-loops
Omit frame pointer Check to not keep the Frame Pointer in a register for
functions that dont need one.
Uncheck to keep the Frame Pointer.
-fomit-frame-pointer
Unlimited procedural
abstraction
Enable the procedure abstraction optimization. There is
no limit on the nesting level.
-mpa
Procedural abstraction Enable the procedure abstraction optimization up to level
n. Equivalent to -mpa=n option, where n equals:
 0 - Optimization is disabled.
 1 - The first level of abstraction is allowed; that is,
instruction sequences in the source code may be
abstracted into a subroutine.
 2 or greater - A second level of abstraction is
allowed; that is, instructions that were put into a sub-
routine in the first level may be abstracted into a sub-
routine one level deeper. This pattern continues for
larger values of n. The net effect is to limit the sub-
routine call nesting depth to a maximum of n.
-mpa=n
Align arrays Set the minimum alignment for array variables to be the
largest power of two less than or equal to their total stor-
age size, or the biggest alignment used on the machine,
whichever is smaller.
-falign-arrays

- 1
- 2
…
- 53
- 54
- 55
- 56
- 57
…
- 365
- 366