Latest available version: IDA and decompilers v8.4.240320sp1 see all releases
Hex-Rays logo State-of-the-art binary code analysis tools
email icon
Convert operand to an offset
(for the explanations of 'ea' and 'n' please see op_bin())
     base - base of the offset as a linear address
            If base == BADADDR then the current operand becomes non-offset
Example:
 seg000:2000 dw      1234h
and there is a segment at paragraph 0x1000 and there is a data item
within the segment at 0x1234:
 seg000:1234 MyString        db 'Hello, world!', 0
Then you need to specify a linear address of the segment base to
create a proper offset:
     op_plain_offset(to_ea("seg000", 0x2000), 0, 0x10000);
and you will have:
 seg000:2000 dw      offset MyString
Motorola 680x0 processor have a concept of "outer offsets".
If you want to create an outer offset, you need to combine number
of the operand with the following bit:

#define OPND_OUTER 0x80 // outer offset base // Please note that the outer offsets are meaningful only for // Motorola 680x0.

success op_plain_offset(long ea, int n, long base);

Index | Previous topic | Next topic