|
Linux Kernel
3.7.1
|
Go to the source code of this file.
Macros | |
| #define | validate_next(t, insn, n) ((insn)->next_byte + sizeof(t) + n - (insn)->kaddr <= MAX_INSN_SIZE) |
| #define | __get_next(t, insn) ({ t r = *(t*)insn->next_byte; insn->next_byte += sizeof(t); r; }) |
| #define | __peek_nbyte_next(t, insn, n) ({ t r = *(t*)((insn)->next_byte + n); r; }) |
| #define | get_next(t, insn) ({ if (unlikely(!validate_next(t, insn, 0))) goto err_out; __get_next(t, insn); }) |
| #define | peek_nbyte_next(t, insn, n) ({ if (unlikely(!validate_next(t, insn, n))) goto err_out; __peek_nbyte_next(t, insn, n); }) |
| #define | peek_next(t, insn) peek_nbyte_next(t, insn, 0) |
Functions | |
| void | insn_init (struct insn *insn, const void *kaddr, int x86_64) |
| void | insn_get_prefixes (struct insn *insn) |
| void | insn_get_opcode (struct insn *insn) |
| void | insn_get_modrm (struct insn *insn) |
| int | insn_rip_relative (struct insn *insn) |
| void | insn_get_sib (struct insn *insn) |
| void | insn_get_displacement (struct insn *insn) |
| void | insn_get_immediate (struct insn *insn) |
| void | insn_get_length (struct insn *insn) |
| #define get_next | ( | t, | |
| insn | |||
| ) | ({ if (unlikely(!validate_next(t, insn, 0))) goto err_out; __get_next(t, insn); }) |
insn_get_immediate() - Get the immediates of instruction : &struct insn containing instruction
If necessary, first collects the instruction up to and including the displacement bytes. Basically, most of immediates are sign-expanded. Unsigned-value can be get by bit masking with ((1 << (nbytes * 8)) - 1)
insn_get_opcode - collect opcode(s) : &struct insn containing instruction
Populates ->opcode, updates ->next_byte to point past the opcode byte(s), and set ->attr (except for groups). If necessary, first collects any preceding (prefix) bytes. Sets ->opcode.value = opcode1. No effect if ->opcode.got is already 1.
insn_init() - initialize struct insn : &struct insn to be initialized : address (in kernel memory) of instruction (or copy thereof) : !0 for 64-bit kernel or 64-bit app
insn_rip_relative() - Does instruction use RIP-relative addressing mode? : &struct insn containing instruction
If necessary, first collects the instruction up to and including the ModRM byte. No effect if ->x86_64 is 0.
1.8.2