当前位置: 技术问答>linux和unix
内核中static inline int strncmp(const char * cs,const char 的问题
来源: 互联网 发布时间:2015-06-28
本文导语: static inline int strncmp(const char * cs,const char * ct,size_t count) { register int __res; int d0, d1, d2; __asm__ __volatile__( "1:tdecl %3nt" "js 2fnt" "lodsbnt" "scasbnt" "jne 3fnt"...
static inline int strncmp(const char * cs,const char * ct,size_t
count)
{
register int __res;
int d0, d1, d2;
__asm__ __volatile__(
"1:tdecl %3nt"
"js 2fnt"
"lodsbnt"
"scasbnt"
"jne 3fnt"
"testb %%al,%%alnt" #这句话是什么意思啊,纳闷※郁闷*
"jne 1bn"
"2:txorl %%eax,%%eaxnt"
"jmp 4fn"
"3:tsbbl %%eax,%%eaxnt"
"orb $1,%%aln"
"4:"
:"=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2)
:"1" (cs),"2" (ct),"3" (count));
return __res;
}
count)
{
register int __res;
int d0, d1, d2;
__asm__ __volatile__(
"1:tdecl %3nt"
"js 2fnt"
"lodsbnt"
"scasbnt"
"jne 3fnt"
"testb %%al,%%alnt" #这句话是什么意思啊,纳闷※郁闷*
"jne 1bn"
"2:txorl %%eax,%%eaxnt"
"jmp 4fn"
"3:tsbbl %%eax,%%eaxnt"
"orb $1,%%aln"
"4:"
:"=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2)
:"1" (cs),"2" (ct),"3" (count));
return __res;
}
|
al为源字符串长度,"testb %%al,%%alnt"应该是判断是否已将所有字符都比较完了。
|
t is a tab char
sbb i think you can find it
l descripter it's a long
sbb i think you can find it
l descripter it's a long
|
SBB ── Integer Subtraction with Borrow
不用多解释了吧
不用多解释了吧
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。