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)。 這是對的,如果是的話,萊亞爾做了什麼?