跟踪c++的汇编指令发现的一个不解的问题

黎前点星 2017-03-29 10:57:42
申请一个int指针,代码如下

int* a = new int;
00FE7DFE push 4
00FE7E00 call operator new (0FE137Ah)
00FE7E05 add esp,4
00FE7E08 mov dword ptr [ebp-0ECh],eax //将寄存器EAX的值写入 [ebp-0ECh]
00FE7E0E mov eax,dword ptr [ebp-0ECh] //再将 [ebp-0ECh]的值重新写到EAX
00FE7E14 mov dword ptr [a],eax


搞不懂了,这两条语句貌似一点作用都没有呀,小弟愚钝,请大神指导一下
...全文
669 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhujinqiang 2017-04-24
  • 打赏
  • 举报
回复
编译器开优化再编译下试试。
大熊猫侯佩 2017-04-11
  • 打赏
  • 举报
回复
编译器肯定没有有经验的汇编程序猿生成的代码有效率
WJN92 2017-04-07
  • 打赏
  • 举报
回复
这个应该是编译器中间码的问题。 int* a = new int; 拆分成两部 tmp = new int; int *a = tmp 又因为你没有开优化,所以就直接编译了。
zara 2017-03-30
  • 打赏
  • 举报
回复
编译器优化不够、照本宣科的缘故吧;这里,那个再从 [ebp-EC] 取值到 eax 是不必要的。
把优化开到最大,再看,应该就是另一番景象了。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧