24.4.7 Banked Data Objects
The __bank(num)
qualifier can be used to indicate that variables are
located in a particular data memory bank. The number, num
, represents
the bank number. Exactly what constitutes banked memory is dependent on the target
device, but it is typically a subdivision of data memory to allow for assembly
instructions with a limited address width field.
Use the native keywords discussed in the Differences section to look up information on the semantics of these qualifiers.
Some devices may not have banked data memory implemented, in which case, use of this qualifier is ignored. The number of data banks implemented will vary from one device to another.
Example
The following shows a variable qualified using __bank()
.
__bank(0) char start;
__bank(5) char stop;
Differences
The 8-bit compilers have used the four qualifiers bank0
,
bank1
, bank2
and bank3
to
indicate the same, albeit more limited, memory placement.
Equivalent specifiers have never been defined for any other compiler.
Migration to the CCI
For 8-bit compilers, change any occurrence of the bankx
qualifiers to
__bank()
, for example, from:
bank2 int logEntry;
to:
__bank(2) int logEntry;
Caveats
This feature is not yet implemented in MPLAB XC8.