逻辑左移 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: 汇编指令 逻辑左移 | |
![]() | ![]() |