|
毕业设计中还碰到了另外个问题
先看代码
#include<linux/delay.h>
void __delay(int loops)
{
long long dummy;
__asm__ __volatile__("gettr " __t0 ", %1\n\t"
"_pta 4, " __t0 "\n\t"
"addi %0, -1, %0\n\t"
"bne %0, r63, " __t0 "\n\t"
"ptabs %1, " __t0 "\n\t":"=r"(loops),
"=r"(dummy)
:"0"(loops));
}
void __udelay(unsigned long long usecs, unsigned long lpj)
{
usecs *= (((unsigned long long) HZ << 32) / 1000000) * lpj;
__delay((long long) usecs >> 32);
}
#ifdef notdef
#define mdelay(n) (\
{unsigned long msec=(n); while (msec--) udelay(1000);})
#else
#define mdelay(n) (\
(__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \
({unsigned long msec=(n); while (msec--) udelay(1000);}))
#endif
这是c语言和汇编函数的混编
明白它用的是at&t的汇编格式。也看过这种格式的介绍但
比如:_pta 4, bne r63, 还是不明白是什么意思 。
有相关的材料可以使用吗。
在此先谢谢各位了 |
|