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 | ||
