A complex offset expression looks like
Index
| Previous topic
| Next topic
offset target + delta - offset baseIt is specified by:
- type (OFF16, OFF32, LOW16, etc.) - base - optional target - optional delta from targetThe relationship between these parameters is (the formula is given for full offsets):
operand_value = target + delta - base
or (the same relationship in a different form):
target = operand_value - delta + baseYou always have to specify the offset type and base. Usually, the delta is equal to zero. For the full offset type you may omit the offset target, which is recommended. In this case, IDA will calculate it automatically. However, if you specify the offset target, make sure that the relationship between the parameters still holds. For the half offset types, you have to specify the target because there is no way to calculate it.
The offset types:
8-bit full offset : 16-bit full offset : 32-bit full offset :
The full offsets are regular offset expressions like
offset label
They can occupy 8, 16, or 32 bits. You have to specify the offset base for these offsets.
low 8 bits of 16-bit offset :
Only the low 8 bits of the offset. IDA will represent them as
(offset label) & 0xFF
low 16 bits of 32-bit offset :
Only the low 16 bits of the offset. IDA will represent them as
(offset label) & 0xFFFF
high 8 bits of 16-bit offset :
Only the high 8 bits of the offset. IDA will represent them as
offset label >> 8
high 16 bits of 32-bit offset:
Only the high 17 bits of the offset. IDA will represent them as
offset label >> 16See also offset by any user-specified base