函数逻辑报告 |
Source Code:arch\x86\lib\insn.c |
Create Date:2022-07-27 08:24:04 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:sn_get_prefixes - scan x86 instruction prefix bytes*@insn: &struct insn containing instruction* Populates the @insn->prefixes bitmap, and updates @insn->next_byte* to point to the (first) opcode. No effect if @insn->prefixes.got* is already set.
函数原型:void insn_get_prefixes(struct insn *insn)
返回类型:void
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct insn * | insn |
| 113 | nb等于0 |
| 114 | lb等于0 |
| 115 | b等于peek_next(insn_byte_t, insn) |
| 121 | 转到:found |
| 126 | 如果inat_is_address_size_prefix(attr)则 |
| 128 | 如果x86_64则addr_bytes异或等于12 |
| 130 | 否则addr_bytes异或等于6 |
| 132 | 否则如果inat_is_operand_size_prefix(attr)则 |
| 134 | opnd_bytes异或等于6 |
| 136 | found : |
| 137 | nbytes自加 |
| 138 | next_byte自加 |
| 140 | b等于peek_next(insn_byte_t, insn) |
| 145 | 如果此条件成立可能性小(为编译器优化)(bytes[3])则 |
| 156 | 如果x86_64则 |
| 157 | b等于peek_next(insn_byte_t, insn) |
| 159 | 如果inat_is_rex_prefix(attr)则 |
| 171 | b等于peek_next(insn_byte_t, insn) |
| 173 | 如果inat_is_vex_prefix(attr)则 |
| 174 | b2等于peek_nbyte_next(insn_byte_t, insn, 1) |
| 175 | 如果非x86_64则 |
| 181 | 如果X86_MODRM_MOD(b2)不等于3则转到:vex_end |
| 186 | 如果inat_is_evex_prefix(attr)则 |
| 187 | b2等于peek_nbyte_next(insn_byte_t, insn, 2) |
| 189 | b2等于peek_nbyte_next(insn_byte_t, insn, 3) |
| 191 | nbytes等于4 |
| 192 | next_byte加等于4 |
| 193 | 如果x86_64且VEX3 Byte2 (b2)则opnd_bytes等于8 |
| 196 | 否则如果inat_is_vex3_prefix(attr)则 |
| 197 | b2等于peek_nbyte_next(insn_byte_t, insn, 2) |
| 199 | nbytes等于3 |
| 200 | next_byte加等于3 |
| 201 | 如果x86_64且VEX3 Byte2 (b2)则opnd_bytes等于8 |
| 204 | 否则 |
| 215 | vex_end : |
| 220 | err_out : |
| 221 | 返回 |
| 名称 | 描述 |
|---|---|
| insn_get_opcode | sn_get_opcode - collect opcode(s)*@insn: &struct insn containing instruction* Populates @insn->opcode, updates @insn->next_byte to point past the* opcode byte(s), and set @insn->attr (except for groups). |
| get_seg_reg_override_idx | get_seg_reg_override_idx() - obtain segment register override index*@insn: Valid instruction with segment override prefixes* Inspect the instruction prefixes in @insn and find segment overrides, if any |
| insn_is_avx | |
| insn_is_evex |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |