打印
[AVR单片机]

AVR 在atmel studio 6.1中,C语言如何插入asm

[复制链接]
5247|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Cheky|  楼主 | 2013-8-2 10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
john_lee| | 2013-8-2 11:14 | 只看该作者
看gcc document

使用特权

评论回复
板凳
airwill| | 2013-8-2 15:10 | 只看该作者
atmel studio 6.1 只是个集成环境, 不包含编译器的.
用不同的编译器, 就要使用各个编译器规定的 asm 内嵌编写规则.

使用特权

评论回复
地板
john_lee| | 2013-8-2 15:27 | 只看该作者
airwill 发表于 2013-8-2 15:10
atmel studio 6.1 只是个集成环境, 不包含编译器的.
用不同的编译器, 就要使用各个编译器规定的 asm 内嵌编 ...

以前的AVR Studio才不包括编译器,而Atmel Studio都是内置了GCC的:
“Atmel Studio 6 includes a powerful editor with visual assist, a GNU C/C++ Compiler and a New Project Wizard to jump-start as well as ease your application code development. ”

使用特权

评论回复
5
airwill| | 2013-8-2 15:31 | 只看该作者
john_lee 发表于 2013-8-2 15:27
以前的AVR Studio才不包括编译器,而Atmel Studio都是内置了GCC的:
“Atmel Studio 6 includes a powerf ...

谢谢指正.
看来好久没有用这个开发环境, 现在这么大的改进都不知道了.
又一次说瞎话了, 同时向楼主道歉, 不好意思.

使用特权

评论回复
6
huangxz| | 2013-8-2 15:53 | 只看该作者
airwill 发表于 2013-8-2 15:31
谢谢指正.
看来好久没有用这个开发环境, 现在这么大的改进都不知道了.
又一次说瞎话了, 同时向楼主道歉,  ...

这个开发环境大如牛,我们都还在用最后一个小的4.19,有点伤感啊。

使用特权

评论回复
7
airwill| | 2013-8-2 16:03 | 只看该作者
gcc 的嵌入汇编, 可以参考库里的例子.
上一个计算 CRC16 的例程, 来自 include\util\crc16.h

static __inline__ uint16_t
_crc16_update(uint16_t __crc, uint8_t __data)
{
        uint8_t __tmp;
        uint16_t __ret;

        __asm__ __volatile__ (
                "eor %A0,%2" "\n\t"
                "mov %1,%A0" "\n\t"
                "swap %1" "\n\t"
                "eor %1,%A0" "\n\t"
                "mov __tmp_reg__,%1" "\n\t"
                "lsr %1" "\n\t"
                "lsr %1" "\n\t"
                "eor %1,__tmp_reg__" "\n\t"
                "mov __tmp_reg__,%1" "\n\t"
                "lsr %1" "\n\t"
                "eor %1,__tmp_reg__" "\n\t"
                "andi %1,0x07" "\n\t"
                "mov __tmp_reg__,%A0" "\n\t"
                "mov %A0,%B0" "\n\t"
                "lsr %1" "\n\t"
                "ror __tmp_reg__" "\n\t"
                "ror %1" "\n\t"
                "mov %B0,__tmp_reg__" "\n\t"
                "eor %A0,%1" "\n\t"
                "lsr __tmp_reg__" "\n\t"
                "ror %1" "\n\t"
                "eor %B0,__tmp_reg__" "\n\t"
                "eor %A0,%1"
                : "=r" (__ret), "=d" (__tmp)
                : "r" (__data), "0" (__crc)
                : "r0"
        );
        return __ret;
}

使用特权

评论回复
8
efen| | 2013-8-2 18:50 | 只看该作者
同问,想找编绎器的参考资料

使用特权

评论回复
9
qin552011373| | 2013-8-2 20:43 | 只看该作者
看GCC的文档说明   不过要英文好才可以看明白

使用特权

评论回复
10
worldsing| | 2013-8-2 22:19 | 只看该作者
不用studio

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

33

帖子

0

粉丝