A.1.1.1 GP relative access

This generates code to access variables using one instruction by placing variables in sections that can be accessed via the global pointer (GP) and an ld/st instruction.

Use a #pragma section directive when defining or accessing variables, and specify either gp_disp16 or gp_disp23 as the attribute strings.

#pragma section attribute-strings
variable-declaration/definition
#pragma section default

 

Example 1.

Accessing via a GP-relative 4-byte load/store instruction

#pragma section gp_disp16
int a = 1;              /*allocated to .sdata section*/
int b;                  /*allocated to .sbss section*/
#pragma section default

 

Example 2.

Accessing via a GP-relative 6-byte load/store instruction

#pragma section gp_disp23
int a = 1;             /*allocated to .sdata23 section*/
int b;                 /*allocated to .sbss23 section*/
#pragma section default