A βsimpleβ way is to let the assembler process it using the dla pseudo- dla . It will expand approximately to your code:
lui $dst, LabelAddr[63:48] lui $at, LabelAddr[31:16] daddiu $dst, $dst, LabelAddr[47:32] daddiu $at, $at, LabelAddr[15:0] dsll32 $dst, $dst, 0 daddu $dst, $dst, $at
A persistent pool is a memory area in which you store your constants that can be solved efficiently. Some assemblers and architectures have special support for this; on others, you must do something manually. As indicated in the answer to your question, you can set the pointer to your permanent pool (using the above method) and use more efficient access for subsequent operations.
# load pool base address dla $s0, pool foo:
Jester
source share