在程序集中查找操作码/字节

时间:2014-02-24 20:21:39

标签: assembly x86

对于这些代码行,我需要找到Op代码,目标代码的字节数以及执行所需的时钟周期数。假设值引用内存中的单词,Double引用双字。

sub wordOp, ax
sub eax,10
add dblOp, 10
add eax,[ebx]

有人可以向我解释如何获取代码行的这些值吗?

2 个答案:

答案 0 :(得分:0)

我不知道它是否有帮助,但似乎您需要做的就是将此代码放在__asm子句中:

void main()
{
    short a;
    long  b;
    __asm
    {
        sub a,ax
        sub eax,10
        add b,10
        add eax,[ebx]
    }
}

然后,在__asm子句的第一行放置一个断点,并在调试模式下运行该程序。然后,右键单击该文本,然后选择Go To Disassembly,它将显示以下内容:

          sub a,ax
0030139E  sub word ptr [a],ax
          sub eax,10
003013A2  sub eax,0Ah
          add b,10
003013A5  add dword ptr [b],0Ah
          add eax,[ebx]
003013A9  add eax,dword ptr [ebx]
...
003013AB

上面的地址当然在我的本地程序中,但代码的大小可以很容易地计算为0x003013AB - 0030139E = D,即13个字节。

顺便说一句,我不确定short along b(也可能是int adouble b),所以你需要问一下谁给了你关于wordOpdblOp ...

的确切含义的任务

答案 1 :(得分:0)

我喜欢这个在线汇编程序: https://defuse.ca/online-x86-assembler.htm#disassembly

但是时钟周期的数量取决于cpu架构。

德克