diff options
Diffstat (limited to 'src/arch/x86/operand.h')
-rw-r--r-- | src/arch/x86/operand.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/arch/x86/operand.h b/src/arch/x86/operand.h index cb04ca8..fc40b38 100644 --- a/src/arch/x86/operand.h +++ b/src/arch/x86/operand.h @@ -207,11 +207,16 @@ typedef enum _X86OperandType } X86OperandType; -/* Procède à la lecture d'un opérande donné. */ -bool x86_read_one_operand(GArchInstruction *, const bin_t *data, off_t *pos, off_t, X86OperandType, ...); +/* Nombre maximal d'opérande */ +#define MAX_OPERANDS 3 -/* Procède à la lecture de deux opérandes donnés. */ -bool x86_read_two_operands(GArchInstruction *, const bin_t *data, off_t *pos, off_t, X86OperandType, X86OperandType, ...); + +#define x86_read_one_operand(instr, data, pos, len, ...) _x86_read_operands(instr, data, pos, len, 1, __VA_ARGS__) +#define x86_read_two_operands(instr, data, pos, len, ...) _x86_read_operands(instr, data, pos, len, 2, __VA_ARGS__) +#define x86_read_three_operands(instr, data, pos, len, ...) _x86_read_operands(instr, data, pos, len, 3, __VA_ARGS__) + +/* Procède à la lecture de n opérandes donnés. */ +bool _x86_read_operands(GArchInstruction *, const bin_t *, off_t *, off_t, unsigned int, ...); |