我最近開始學習masm程序集,我一直在拆解我的許多程序,只是爲了看看。我注意到,當你使用__int16(word)時,它的值首先被複制到eax中,然後到達變量本身,但是使用int(dword/32)它被直接複製到變量中:繼承了爲什麼__int16和int(32)用C++生成不同的asm?
的拆開代碼int y = 5;
0040101E mov dword ptr [y],5
y += 7;
00401025 mov eax,dword ptr [y]
00401028 add eax,7
0040102B mov dword ptr [y],eax
__int16 x = 3;
0040102E mov eax,3
00401033 mov word ptr [x],ax
x += 6;
00401037 movsx eax,word ptr [x]
0040103B add eax,6
0040103E mov word ptr [x],ax
我注意到__int16的大小是16 ...這是eax大小的一半,這就是爲什麼它被放入eax中然後只有ax到x中?
另外,哪個最快?
有什麼好的masm網站你會推薦?
感謝您的輸入
哪個編譯器?什麼優化級別? – 2010-11-20 17:55:42