Nios® II Processor Reference Guide

ID 683836
Date 8/28/2023
Public
Document Table of Contents

8.4. Assembler Macros

The Nios II assembler provides macros to extract halfwords from labels and from 32-bit immediate values. These macros return 16-bit signed values or 16-bit unsigned values depending on where they are used. When used with an instruction that requires a 16-bit signed immediate value, these macros return a value ranging from –32768 to 32767. When used with an instruction that requires a 16-bit unsigned immediate value, these macros return a value ranging from 0 to 65535.
Table 93.  Assembler Macros
Macro Description Operation
%lo(immed32) Extract bits [15..0] of immed32 immed32 & 0xFFFF
%hi(immed32) Extract bits [31..16] of immed32 (immed32 >> 16) & 0xFFFF
%hiadj(immed32) Extract bits [31..16] and adds bit 15 of immed32 ((immed32 >> 16) & 0xFFFF) +

((immed32 >> 15) & 0x1)

%gprel(immed32) Replace the immed32 address with an offset from the global pointer immed32 –_gp

Refer to the Application Binary Interface chapter of the Nios® II Processor Reference Handbook for more information about global pointers.