关于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再加一的做法。