替换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; }
父主题: 嵌入式汇编类问题