3
我正在用gcc编译我的代码并查看程序集,这段代码究竟在做什么?shrl vs sarl .. x86汇编gnu
shrl $20, %edx
leal (%edx,%eax), %eax
sarl 1, %eax
假设变量X位于edx寄存器,而Y位于eax并且都是(32位int)。这里发生了什么??
我知道'shrl $ 20,%edx'正在将%eax右移20位,所以与以下内容相同:eax /(2^20) 然后sarl是相同的,所以'sarl 1,%eax'= eax /(2^1)。 这是对的,如果是的话,莱亚尔做了什么?