4.8 Special Operators
The assembler provides a set of special operators to assist with address generation for the dsPIC33C/E/F modified-Harvard architectures. The dsPIC33A architecture features a unified address space and these special operators are not required; however, a few of the operators may be useful as noted below.
Operators* | Description | Support** |
---|---|---|
tblpage(
) | Get page for table read/write operations. | 33C/33E/33F |
tbloffset(
) | Get pointer for table read/write operations. | 33C/33E/33F |
psvpage(
) | Get page for PSV data window operations. | 33C/33E/33F |
psvoffset(
) | Get pointer for PSV data window operations. | 33C/33E/33F |
paddr(
) | Get 24-bit address of label in program memory. | 33C/33E/33F |
Get 32-bit address of label
in program memory. | 33A | |
handle(
) | Get 16-bit reference to label in program memory. | 33C/33E/33F |
dmapage(name) | Get page suitable for DMA controller. | 33E |
dmaoffset( name ) | Get offset of a symbol within DMA memory. | 33F |
.sizeof.(
) | Get size of section name in address units. | All |
.startof.(
) | Get starting address of section
name . | All |
boot( num ) | Get address of access slot num in the boot segment.. | 33C/33E/33F |
secure( num ) | Get address of access slot num in the secure
segment. | 33C/33E/33F |
edspage( name ) | Get page for EDS data window operations. | 33C/33E/33F |
edsoffset( name ) | Get pointer for EDS data window operations. | 33C/33E/33F |
* You cannot use two special
operators in an expression. ** All = all devices ; 33A = dsPIC33A; 33C = dsPIC33C; 33E = dsPIC33E; 33F = dsPIC33F |