mirror of
https://github.com/radareorg/radare2.git
synced 2025-02-06 13:37:07 +00:00
Fix many x86.udis86 ESIL expressions
This commit is contained in:
parent
f4a1b0a3bd
commit
800615faf7
@ -79,6 +79,7 @@ static int getarg(char *src, struct ud *u, st64 mask, int idx, int regsz) {
|
||||
case UD_OP_JIMM:
|
||||
case UD_OP_IMM:
|
||||
n = getval (op) & mask;
|
||||
mask = UT64_MAX; // uhm?
|
||||
if (op->type == UD_OP_JIMM) n += u->pc;
|
||||
if (n>=0 && n<256)
|
||||
sprintf (src, "%"PFMT64d, n & mask);
|
||||
@ -514,7 +515,7 @@ static int set_reg_profile(RAnal *anal) {
|
||||
"flg flag_t .1 .453 0\n"
|
||||
"flg flag_i .1 .454 0\n"
|
||||
"flg flag_d .1 .455 0\n"
|
||||
"flg flag_o .1 .456 0\n"
|
||||
"flg of .1 .456 0\n"
|
||||
"flg flag_r .1 .457 0\n"
|
||||
"drx dr0 .32 0 0\n"
|
||||
"drx dr1 .32 4 0\n"
|
||||
@ -571,7 +572,7 @@ static int set_reg_profile(RAnal *anal) {
|
||||
"flg flag_t .1 .1157 0\n"
|
||||
"flg flag_i .1 .1158 0\n"
|
||||
"flg flag_d .1 .1159 0\n"
|
||||
"flg flag_o .1 .1160 0\n"
|
||||
"flg of .1 .1160 0\n"
|
||||
"flg flag_r .1 .1161 0\n"
|
||||
"gpr rsp .64 152 0\n"
|
||||
"seg ss .64 160 0\n"
|
||||
|
@ -50,10 +50,10 @@ RPN UDIS86_ESIL (call,
|
||||
dst, info->pc);
|
||||
|
||||
RPN UDIS86_ESIL (hlt, "hlt,TODO");
|
||||
RPN UDIS86_ESIL (shl, "%s,%s,<<=,cz,?=", src, dst);
|
||||
RPN UDIS86_ESIL (shr, "%s,%s,>>=,cz,?=", src, dst);
|
||||
RPN UDIS86_ESIL (salc, "%s,%s,<<=,cz,?=", src, dst);
|
||||
RPN UDIS86_ESIL (sar, "%s,%s,>>=,cz,?=", src, dst);
|
||||
RPN UDIS86_ESIL (shl, "%s,%s,<<=,cz,%%z,zf,=", src, dst);
|
||||
RPN UDIS86_ESIL (shr, "%s,%s,>>=,cz,%%z,zf,=", src, dst);
|
||||
RPN UDIS86_ESIL (salc, "%s,%s,<<=,%%z,zf,=", src, dst);
|
||||
RPN UDIS86_ESIL (sar, "%s,%s,>>=,%%z,zf,=", src, dst);
|
||||
RPN UDIS86_ESIL (rol, "%s,%s,<<<=", src, dst);
|
||||
RPN UDIS86_ESIL (ror, "%s,%s,>>>=", src, dst);
|
||||
#if 0
|
||||
@ -65,14 +65,14 @@ RPN UDIS86_ESIL (ror, "%s,%d,-,1,<<,%s,&,cf,=,%s,%s,>>=,%s,zf,=", src, info->reg
|
||||
// UDIS86_ESIL (add, "cf=%s<=-%s&%s!=0,of=!((%s^%s)>>%d)&(((%s+%s)^%s)>>%d),%s+=%s,zf=%s==0,sf=%s>>%d", dst, src, src, dst, src, info->bits - 1, dst, src, src, info->bits - 1, dst, src, dst, dst, info->bits - 1);
|
||||
// XXX: this is wrong coz add [rax], al -> al,[rax+0],= ;;; this is not valid esil
|
||||
RPN UDIS86_ESIL (add, "%s,%s,+=", src, dst); //cf=%s<=-%s&%s!=0,of=!((%s^%s)>>%d)&(((%s+%s)^%s)>>%d),%s+=%s,zf=%s==0,sf=%s>>%d", dst, src, src, dst, src, info->bits - 1, dst, src, src, info->bits - 1, dst, src, dst, dst, info->bits - 1);
|
||||
RPN UDIS86_ESIL (inc, "1,%s,+=,z,?=", dst);
|
||||
RPN UDIS86_ESIL (dec, "1,%s,-=,zos,?=", dst);
|
||||
RPN UDIS86_ESIL (inc, "1,%s,+=,z,%%z,zf,=", dst);
|
||||
RPN UDIS86_ESIL (dec, "1,%s,-=,%%z,zf,=,%%o,of,=,%%s,sf,=", dst);
|
||||
// UDIS86_ESIL (inc, "of=(%s^(%s+1))>>%d,%s++,zf=%s==0,sf=%s>>%d", dst, dst, info->bits - 1, dst, dst, dst, info->bits - 1);
|
||||
// UDIS86_ESIL (sub, "cf=%s<%s,of=!((%s^%s)>>%d)&(((%s+%s)^%s)>>%d),%s-=%s,zf=%s==0,sf=%s>>%d", dst, src, dst, src, info->bits - 1, dst, src, src, info->bits - 1, dst, src, dst, dst, info->bits - 1);
|
||||
RPN UDIS86_ESIL (sub, "%s,%s,-=,cosz,?=", src, dst); // TODO: update flags
|
||||
RPN UDIS86_ESIL (sub, "%s,%s,-=,%%c,cf,=,%%z,zf,=,%%s,sf,=,%%o,of,=", src, dst); // TODO: update flags
|
||||
// UDIS86_ESIL (dec, "of=(%s^(%s-1))>>%d,%s--,zf=%s==0,sf=%s>>%d", dst, dst, info->bits - 1, dst, dst, dst, info->bits - 1);
|
||||
// UDIS86_ESIL (cmp, "cf=%s<%s,zf=%s==%s", dst, src, dst, src);
|
||||
RPN UDIS86_ESIL (cmp, "%s,%s,==,cz,?=", dst, src);
|
||||
RPN UDIS86_ESIL (cmp, "%s,%s,==,%%z,zf,=", dst, src);
|
||||
// UDIS86_ESIL (xor, "%s^=%s,zf=%s==0,sf=%s>>%d,cf=0,of=0", dst, src, dst, dst, info->bits - 1);
|
||||
RPN UDIS86_ESIL (xor, "%s,%s,^=", dst, src);
|
||||
// UDIS86_ESIL (or, "%s|=%s,zf=%s==0,sf=%s>>%d,cf=0,of=0", dst, src, dst, dst, info->bits - 1);
|
||||
@ -84,7 +84,7 @@ RPN UDIS86_ESIL (and, "%s,%s,&=,%s,!,zf,%s,%d,>>,sf,=,0,cf,=,0,of,=",
|
||||
src, dst, dst, dst, info->bits-1);
|
||||
#endif
|
||||
// UDIS86_ESIL (test, "zf=%s&%s==0,sf=%s>>%d,cf=0,of=0", dst, src, dst, info->bits - 1);
|
||||
RPN UDIS86_ESIL (test, "%s,%s,==,cz,?=", dst, src);
|
||||
RPN UDIS86_ESIL (test, "%s,%s,==,%%z,zf,=", dst, src);
|
||||
|
||||
// UDIS86_ESIL (syscall, "$");
|
||||
RPN UDIS86_ESIL (syscall, "$");
|
||||
|
Loading…
x
Reference in New Issue
Block a user