| 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;
 }
 
 |