Я компилирую свой код с помощью gcc и смотрю на сборку, что именно делает этот код?shrl vs sarl .. x86 Assembly gnu
shrl $20, %edx
leal (%edx,%eax), %eax
sarl 1, %eax
Говорят, что переменная Х в регистре EDX, и Y находится в EAX и оба (32-разрядное целое). Что здесь происходит??
Я знаю, что 'srl $ 20,% edx' сдвигает% eax справа 20 бит, так же, как: eax/(2^20) , а затем sarl - это то же самое, что и sarl 1,% eax '= eax/(2^1). Правильно ли это, и если да, то что делает leal?