X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ida%2Fsaveasm%2Fsaveasm.cpp;h=5a6a2a65be16e3e6980e0b0d32734aee095f2ae1;hb=206c0727041648e9545d16b25e591880f2c58f79;hp=51f67d2965d179ebccbcd2801ecd570681282706;hpb=e74324f90dfbc721a4c2f7a6d35698b4f09994d5;p=ia32rtools.git diff --git a/ida/saveasm/saveasm.cpp b/ida/saveasm/saveasm.cpp index 51f67d2..5a6a2a6 100644 --- a/ida/saveasm/saveasm.cpp +++ b/ida/saveasm/saveasm.cpp @@ -374,14 +374,18 @@ static void idaapi run(int /*arg*/) if (cmd.Operands[o].type == o_mem) { tmp_ea = cmd.Operands[o].addr; - flags_t tmp_ea_flags = get_flags_novalue(tmp_ea); - // ..but base float is ok.. - int is_flt = isDwrd(tmp_ea_flags) || isFloat(tmp_ea_flags); - if (!is_flt && !isUnknown(tmp_ea_flags)) + flags_t tmp_flg = get_flags_novalue(tmp_ea); + buf[0] = 0; + if (isDouble(tmp_flg)) { - buf[0] = 0; get_name(ea, tmp_ea, buf, sizeof(buf)); - msg("%x: undefining %x '%s'\n", ea, tmp_ea, buf); + msg("%x: converting dbl %x '%s'\n", ea, tmp_ea, buf); + doQwrd(tmp_ea, 8); + } + if (isOwrd(tmp_flg) || isYwrd(tmp_flg) || isTbyt(tmp_flg)) + { + get_name(ea, tmp_ea, buf, sizeof(buf)); + msg("%x: undefining lrg %x '%s'\n", ea, tmp_ea, buf); do_unknown(tmp_ea, DOUNK_EXPAND); } } @@ -452,8 +456,12 @@ static void idaapi run(int /*arg*/) } // IDA vs masm float/mmx/xmm type incompatibility - if (isDouble(ea_flags) || isTbyt(ea_flags) - || isPackReal(ea_flags)) + if (isDouble(ea_flags)) + { + msg("%x: converting double\n", ea); + doQwrd(ea, 8); + } + else if (isTbyt(ea_flags) || isPackReal(ea_flags)) { do_undef = 1; }