// Code I'll be working with
int shift_left2_rightn(int x, int n)
{
x <<= 2;
x >>= n;
return x;
}
问题 1. 左移 =SAL
和SHL
. 我的书说它们具有相同的效果。那为什么会有两个班次操作呢?
例如:
movl 8(%ebp), %eax //Get x
_______ //x <<= 2
我的书给出了一个答案
sall $2, %eax
将
shll $2, %eax
也是正确答案吗?
问题2:
SHR
通俗地说和 和有什么区别SAR
?我的书说一个是逻辑移位(用零填充),另一个是算术移位(用符号位的副本填充)。
用 0/符号位填充什么?
例如:
我如何知道使用以下装配说明使用哪一个?
movl 12(%ebp), %ecx //Get n
______ //x >>=n
书后有答案
sarl %cl, %eax
请向我解释如果我们使用shrl
.
感谢您帮助理解这一点!