-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathop_69.c
37 lines (29 loc) · 889 Bytes
/
op_69.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include"bin2inc.h"
boolean op_69(void){
char * reg_str;
char * rm_str;
char * imm_str;
address_mode = read_byte();
reg_str = mod_reg();
rm_str = mod_rm();
fx = le_checkFixup(current_va.obj_n, current_va.offset);
if((fx->type ==7)&&(fx->size == 4)){
read_dword();
imm_str = getLabel(fx->object_n, fx->target);
}
else if(fx->size == 0){ // no fixup
if(operand_size == 32){
imm_str = hexbyte(read_dword());
}
else if(operand_size == 16){
imm_str = hexbyte(read_word());
}
else return boolean(0);
}
else return boolean(0);
sprintf(ibuffer, iFORMAT"%s, %s, %s", "imul", reg_str, rm_str, imm_str);
mark_instruction();// comment_instruction();
// push next instruction offset to stack
IDisasm.pushAddress(¤t_va);
return boolean(1);
}