有以下函数func用于处理长整形变量V,请详细分析程序,解释算法的计算过程和程序的功能,并给出在ARM系统中实现相同功能的对应的汇编程序
unsigned long func(unsigned long v)
{
unsigned long t;
t=v^((v<<16)|(v>>16));
t&=~0xff0000;
v=(v<<24)|(v>>8)
return v^(t>>8);
}
有以下函数func用于处理长整形变量V,请详细分析程序,解释算法的计算过程和程序的功能,并给出在ARM系统中实现相同功能的对应的汇编程序
unsigned long func(unsigned long v)
{
unsigned long t;
t=v^((v<<16)|(v>>16));
t&=~0xff0000;
v=(v<<24)|(v>>8)
return v^(t>>8);
}
函数就是一系列的位级别的逻辑操作,最后函数返回等于接收的变量v。
没有arm的机器,AT&T的32位Intel反汇编表示如下: