#include <stdio.h>
int main()
{
int a = 4;
int b = 6;
int c = a + b;
return 0;
}
QtCreator汇编:
VS2019反汇编:
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,效率更提高几个字节不是,效率微乎其微的提高了- -