【问题标题】:What is the equivalent of _rotl64 under GCC [duplicate]GCC下_rotl64的等价物是什么[重复]
【发布时间】:2014-04-15 01:26:53
【问题描述】:

我正在尝试在 AMD64 下执行左循环移位 (rol)。

与 MSVC (_rotl64) 提供的等效内在函数是什么?

【问题讨论】:

  • VS中没有一个:只有_rotl8和_rotl16。您可以使用devx.com/tips/Tip/14043 或内联汇编程序中的例程
  • 我试图提出或查找任何内联程序集来执行所需的任务,但惨遭失败。
  • 您可能会发现,如果您编写 C 代码来执行此操作,编译器会注意到您正在滚动,并使用滚动指令。 (我想说“应该”,但我对编译器的能力没有那么自信!)
  • @MattMcNabb 这就是我最初的目标,但没有得到任何东西。

标签: c++ c gcc rotation x86


【解决方案1】:
#include <stdint.h>

inline uint64_t rotl64 ( uint64_t x, int8_t r )
{
  return (x << r) | (x >> (64 - r));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    相关资源
    最近更新 更多