中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

替换x86 bswap汇编指令

现象描述

编译报错:Error: unknown mnemonic 'bswap' -- 'bswap x3'。

问题原因

bswap是x86的字节序反序指令,需替换为ARM64的rev指令。

处理步骤

  • x86指令实现的bswap如下:
    inline uint32_t bswap(uint32_t val) { 
        __asm__("bswap %0" : "=r" (val) : "0" (val));
        return val; 
    }
  • 在鲲鹏平台下的实现:
    static inline uint32_t bswap(uint32_t val) { 
        __asm__("rev %w[dst], %w[src]" : [dst]"=r"(val) : [src]"r"(val)); 
        return val;
    }