[AVR单片机] 支持AVR的C语言编译器是否提供字节高低位交换的函数?

[复制链接]
4293|6
 楼主| tubie 发表于 2007-12-27 22:24 | 显示全部楼层 |阅读模式
就是想把0xAB这个字节变成0xBA,不知道有没有现成的高效的函数?谢谢!
su_mj000 发表于 2007-12-28 07:34 | 显示全部楼层

自己编一个不就好了吗?

computer00 发表于 2007-12-28 10:09 | 显示全部楼层

#define SWAP8(x) (((x)<<4)|((x)>>4))

 楼主| tubie 发表于 2008-1-8 19:20 | 显示全部楼层

以上效率都比较低啊

有没有单条指令就能实现的?用移位的方法时间比较长啊。
谢谢!
zalin 发表于 2008-1-8 23:07 | 显示全部楼层

使用IAR的话,可以用__swap_nibbles()实现,需要包含inavr.h

John_Lee 发表于 2008-1-9 00:26 | 显示全部楼层

gcc

static inline uint8_t swap (uint8_t val)
{
    asm ("swap %[val] : [val] "+r" (val));
    return val;
}

或者

#define SWAP(v) asm ("swap %[v] : [v] "+r" (v))
 楼主| tubie 发表于 2008-1-11 14:53 | 显示全部楼层

多谢楼上几位!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

135

主题

428

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部