我正在使用gcc编译我的代码并查看程序集,这段代码到底在做什么?
shrl $20, %edx
leal (%edx,%eax), %eax
sarl 1, %eax
Run Code Online (Sandbox Code Playgroud)
假设变量X位于edx寄存器中,Y位于eax且两者都是(32位int).这里发生了什么??
我知道'shrl $ 20,%edx'正在将%eax转移到20位,所以与:eax /(2 ^ 20)相同然后sarl是相同的所以'sarl 1,%eax'= eax /(2 ^ 1 ).是的,如果是的话,勒尔做了什么?
我想从一个搜索函数中保存一组迭代器。有没有“更好的方法”来保存一组迭代器(数组与集合)。每种方法在内存效率方面的优缺点是什么?
谢谢。