An address expression operand. More...
#include <model.h>
Data Fields | |
enum opdis_addr_expr_elem_t | elements |
enum opdis_addr_expr_shift_t | shift |
char | scale |
opdis_reg_t | index |
opdis_reg_t | base |
union { | |
uint64_t u | |
int32_t s | |
opdis_abs_addr_t a | |
} | displacement |
An address expression operand.
An address expression or "effective address" operand. This consists of a displacement or absolute address, a base register, an index register, a scale factor, and a scale operation. All of these components are optional. The general format in x86 is
segment:[base + index * scale + displacement]
for Intel syntax and
segment:displacement(base,index,scale)
for AT&T syntax.
In general, the scale operation is always a left shift, though in the ARM architecture additional scale operations can be specified.