SPRUIG8J January 2018 – March 2024
The C7000 compiler treats memory as a single linear block that is partitioned into subblocks of code and data. Each subblock of code or data generated by a C program is placed in its own continuous memory space. The compiler assumes that a full 48-bit address space is available in target memory.
The C7000 compiler requires that all code and data lie within 2 GB of virtual address space. Use a linker command file to place your code and data within this 2 GB virtual address region. The C7000 compiler produces code that uses position-independent addressing to obtain the addresses of functions (in some cases) and to access statically allocated data in memory. Instructions that use position-independent addressing have limited reach.
Information about linker command files can be found in Section 12.5. For further information, see the C7000 Embedded Application Binary Interface (EABI) Reference Guide (SPRUIG4), specifically the sections on “Computing Code Addresses” and “Data Allocation and Addressing”.