int x=100;
0041137E mov dword ptr [x],64h
int b=x/2;
00411385 mov eax,dword ptr [x]
00411388 cdq
00411389 sub eax,edx
0041138B sar eax,1
0041138D mov dword ptr [b],eax
x/2 的转换为 sar eax,1
x/4
int b=x/4;
00411385 mov eax,dword ptr [x]
00411388 cdq
00411389 and edx,3 //为什么多了个and
0041138C add eax,edx
0041138E sar eax,2
00411391 mov dword ptr [b],eax
看乘法
int x=100;
0041137E mov dword ptr [x],64h
int b=x*2048;
00411385 mov eax,dword ptr [x]
00411388 shl eax,0Bh
0041138B mov dword ptr [b],eax
return 0;
这个会产生移位,再看普通乘法
int b=x*7;
00411385 mov eax,dword ptr [x]
00411388 imul eax,eax,7
0041138B mov dword ptr [b],eax
用的是imul 指令