Zot*_*tta 4 x86 assembly disassembly
我目前正在尝试编写一个反汇编程序.我找到了以下操作码列表及其含义,所以我决定在运行时解析它:http: //mprolab.teipir.gr/vivlio80X86/pentium.txt
但我被困在操作码0x00:接下来是reg/modbyte.解析它对我来说不是什么大问题.但是我在使用Scale-Index-Byte时遇到问题:如果你实际上将esp指定为索引寄存器,它实际上意味着没有索引寄存器.这同样适用于ebp的基址寄存器.但我用c ++内联汇编程序尝试了它:可以编译:"add [ebp*2 + ebp],cl"
那么当使用ebp作为基址寄存器时,如何将ebp用作基址寄存器实际上意味着根本不使用基址寄存器!
"缺少EBP"情况仅适用于ModR/M.Mod字段具有值00二进制的情况.如果需要EBP作为基础,汇编器会将Mod更改为01二进制并添加值为零的8位位移:
004C6D00添加[ebp + ebp*2],cl