SPARC Assembly Language Reference Manual

2.3.9 SPARC V9 Operators and Expressions

The following V9 64-bit operators and expressions in Table 2–4 ease the task of converting from V8/V8plus assembly code to V9 assembly code.

Table 2–4

Unary 

Calculation 

Operators 

%hh

(address) >> 42 

Extract bits 42-63 of a 64-bit word 

%hm

((address) >> 32) & 0x3ff 

Extract bits 32-41 of a 64-bit word 

%lm

(((address) >> 10) & 0x3fffff) 

Extract bits 10-31 of a 64-bit word 

For example:::

sethi %hh (address), %l1
or %l1, %hm (address), %l1
sethi %lm (address), %12
or %12, %lo (address), %12
sllx %l1, 32, %l1
or %l1, %12, %l1

The V9 high 32-bit operators and expressions are identified in Table 2–5.

Table 2–5

Unary 

Calculation 

Operators 

%hix

((((address) ^ 0xffffffffffffffff >> 10) &0x4fffff) 

Invert every bit and extract bits 10-31 

%lox

((address) & 0x3ff | 0x1c00 

Extract bits 0-9 and sign extend that to 13 bits 

For example:

%sethi %hix (address), %l1
or %l1, %lox (address), %l1

The V9 low 44-bit operators and expressions are identified in Table 2–6.

Table 2–6

Unary 

Calculation 

Operators 

%h44

((address) >> 22) 

Extract bits 22-43 of a 64-bit word 

%m44

((address) >> 12) & 0x3ff 

Extract bits 12-21 of a 64-bit word 

l44 

(address) & 0xfff 

Extract bits 0-11 of a 64-bit word 

For example::

%sethi %h44 (address), %l1
or %l1, %m44 (address), %l1
sllx %l1, 12, %l1
or %l1, %144 (address), %l1