繁体   English   中英

组装位移

[英]Assembly bit shifting

给定%ecx%edx的32位十进制数字,当尝试使用shlshr移动原始数字的每个副本时,然后将进位(刚刚被剪切的位)移动到8位寄存器ahal比较是否相等,我写道:

movl    $32, %esi   #counter
xor     %eax, %eax
.LOOP:
shl     %ecx
setb    %ah
shr     %edx
setb    %al
cmp     %ah, %al
jnz     .np
decl    %esi
jnz     .LOOP

我究竟做错了什么?

您正在从相反的方向比较2个数字。 ecx[i] == edx[32-i]您的程序继续循环。 因此,您实际上是在检查ecx是否包含edx的倒数值(即具有重新排序的位)。 例如,对于值0x200000 ecx和值0x400 edx它将返回true。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM