CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): Sue (eXponent)
날 짜 (Date): 2003년 4월 15일 화요일 오후 12시 25분 12초
제 목(Title): Re: [Q]8개의 값을 가장 빠르게 비교하는 �



 더 빠를지 어떨지는 모르겠지만 ...

int compare8array( char a[], char b[])
{
unsigned long  i,j ; 

i = (unsigned long) *( (unsigned long *) &a[0] )
             - (unsigned long) *( (unsigned long *) &b[0] ) ;
j = (unsigned long) *( (unsigned long *) &a[4] )
             - (unsigned long) *( (unsigned long *) &b[4] ) ;

if( (i | j) & 0x80808080) return 1;
return 0;
}        




--------------
 overflow가 일어나면 곤란하겠군요. --;
 Bit연산을 실수로 Bool연산으로 써버렸었네요. 수정했으니 착오없으시길.

MAKE_EVEN_PARITY: 
 mov r24, r25; swap r24; eor r25, r24; mov r24, r25; lsl r24; lsl r24;
 eor r25, r24; mov r24, r25; lsl r24; eor r25, r24; rol r25; sbc r25, r25;
 RET
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.