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