大神求解:同样的代码,用QtCreator汇编和用VS2019反汇编的结果指令不一样!汇编和反汇编啥区别?该看哪一个?VS2019怎么看汇编而不是反汇编? 10C
#include <stdio.h>

int main()
{
    int a = 4;
    int b = 6;
    int c = a + b;
    return 0;
}

QtCreator汇编:
图片说明

VS2019反汇编:
图片说明

2个回答

VS2019反汇编是一种伪码
比如说mov dword ptr[a], 4
这里的ptr[a]表示a变量的地址,而a变量的地址在编译后是一个具体的数字,比如说rbp-4。至于rbp-4对应a,这个是编译器安排的。
所以显然vs的反汇编可读性更好,更一目了然。

其实汇编处理原理是一样的,不过这两个都像楼上说的,都是自定义伪码,看起来差别很大
如果你把2个IDE的代码都编译出来,再用专业点的x64dbg打开,看反汇编,就会很清晰了

编译器不同处理方式不同,汇编的效率不同,这里明显VS胜出
这个需要你对汇编有足够的理解

你如果会纯汇编,甚至可以写出运行效率更高的汇编代码
这里的QT赋值有3次转移赋值,VS也有一次mov eax,ecx再转移赋值到变量地址,
这是VS的逻辑和汇编规范,默认都用EAX或则RAX作为一个运算结果返回再处理.
你要手动写汇编直接省去这次赋值,mov [c],ecx,效率更提高几个字节不是,效率微乎其微的提高了- -

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐