如何让gcc生成旋转指令?

时间:2014-11-07 00:43:39

标签: gcc assembly compilation mips compiler-optimization

我正在使用以下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构造应该是什么?

1 个答案:

答案 0 :(得分:2)

在评论中显示的转储中,似乎n已签名。这意味着,如果n<0,右移可能不是您期望的逻辑转变。要获得有效的轮播模式,您需要n无符号。