函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |