goback add

逻辑左移 SHL

4040 点击·0 回帖
灯火互联
楼主

汇编指令shl进行逻辑左移操作,右边补零
如:
mov ax, 0x15 ; ax = 0001 0101
shl ax, 1; 左移1位,结果ax = 0010 1010 相当于 ax = ax * 2
编译器对高级语言(如c++)进行编译时,如遇到对变量
进行乘以2的幂运算时,编译后常优化为shl.
如下代码:
C/C++ Code复制内容到剪贴板
int a = 0x15;  
a = a * 4;  

编译后反汇编代码可能为:
mov dword ptr [a],15h ; a = 0x15
mov eax,dword ptr [a]  
shl eax,2             ; 左移2位
mov dword ptr [a],eax


另外shr命令实现右移功能,相当于除以2的幂,有符号数右移采用sar
TAG: 汇编指令 逻辑左移

喜欢0 评分0