【发布时间】:2012-11-12 09:54:53
【问题描述】:
代码:
extern inline int strncmp(const char * cs, const char * ct, int count)
{
register int __res;
__asm__("cld\n"
"1:\tdecl %3\n\t"
"js 2f\n\t"
"lodsb\n\t"
"scasb\n\t"
"jne 3f\n\t"
"testb %%al, %%al\n\t"
"jne 1b\n"
"2:\txorl %%eax,%%eax\n\t"
"jmp 4f\n"
"3:\tmovl $1,%%eax\n\t"
"j1 4f\n\t"
"negl %%eax\n"
"4:"
:"=a" (__res):"D" (cs), "S" (ct), "c" (count):"si","di","cx");
return __res;
}
我不明白“js 2f\n\t”中的f和“jne 1b”中的b \n", 如何 明白此事 ?我应该看哪本书?谢谢。
【问题讨论】:
标签: gcc assembly linux-kernel inline-assembly