我正在使用以下C代码:
unsigned int d = 5;
return (n >> d)|(n << (32 - d));
以下是使用gcc 4.9.2(target=mips64-elf
生成的程序集,但我假设您在这种情况下使用的目标无关紧要)
sll $2,$4,27
sra $4,$4,5
or $2,$2,$4
j $31
使gcc生成旋转指令的C构造应该是什么?
答案 0 :(得分:2)
在评论中显示的转储中,似乎n
已签名。这意味着,如果n<0
,右移可能不是您期望的逻辑转变。要获得有效的轮播模式,您需要n
无符号。