关于visual studio 2010变量加一的问题

誰伴我闖荡 2010-07-05 10:39:11
如题:
我发现vs2010下面变量(int)a++;的汇编代码是:
mov eax, DWORD PTR _a$[ebp]
add eax, 1
mov DWORD PTR _a$[ebp], eax
为什么要先将a从存储空间移到eax,然后在eax中加一,再从eax中移到存储空间中。
为什么不直接在存储空间中加一。
而且我也对这两种情况进行了测试比较,直接在存储空间中加一也要快一点。

我对变量a进行了5 000 000 000 次加一。
用本来的a++代码,执行时间是10.65左右
插入汇编代码add [ebp-8],1(ebp-8是a的偏移)执行时间基本上都是10.58左右

请问,为什么vs2010中不直接使用add [ebp-8],1这样类似的代码,而使用上面先移到eax再加一的做法。
...全文
128 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodider 2010-07-06
  • 打赏
  • 举报
回复
1楼说的没错。看看优化选项开了没。
大熊猫侯佩 2010-07-05
  • 打赏
  • 举报
回复
查看VS2010的优化选项,尝试调整。

另外再好的编译器,也不如一个优秀的汇编指令优化者。

21,458

社区成员

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

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