int, float 가 바뀌면서 인풋으로 들어올 때 이것을 같이 처리하고 싶음.
char* 받아서 하나의 바이트 마다 swap 을 돌릴 수 있음 for 문을 사용하여서
불법 !!
가독성 측면에서 정인님 코드
kernel 코드에서는 > 0 이랑 비교하는게 어셈블리상 유리함.
#if 1
#include <stdio.h>
void generic_swap(void *a, void *b, int size)
{
char t;
do {
t = *(char *)a;
*(char *)a++ = *(char *)b;
*(char *)b++ = t;
} while (--size > 0);
}
int main()
{
double ad=3., bd=4.;
int a=3, b=4;
generic_swap( &a, &b, sizeof(a) );
generic_swap( &ad,&bd, sizeof(ad) );
printf("main : ad=%lf, bd=%lf\n", ad, bd );
printf("main : a=%d, b=%d\n", a, b );
return 0;
}
#endif
#if 0
#include <stdio.h>
void swap( void *a , void *b, int size )
{
char t;
int i;
char *p = (char*)a;
char *q = (char*)b;
for(i=0; i<size; i++)
{
t = p[i];
p[i] = q[i];
q[i] = t;
}
}
int main()
{
double ad=3., bd=4.;
int a=3, b=4;
swap( &a, &b, sizeof(a) );
swap( &ad,&bd, sizeof(ad) );
printf("main : ad=%lf, bd=%lf\n", ad, bd );
printf("main : a=%d, b=%d\n", a, b );
return 0;
}
#endif
#if 0
#include <stdio.h>
void swap( char *a , char *b, int size )
{
char t;
int i;
for(i=0; i<size; i++)
{
t = a[i];
a[i] = b[i];
b[i] = t;
}
}
int main()
{
double ad=3., bd=4.;
int a=3, b=4;
swap( (char*)&a, (char*)&b, sizeof(a) );
swap( (char*)&ad, (char*)&bd, sizeof(ad) );
printf("main : ad=%lf, bd=%lf\n", ad, bd );
printf("main : a=%d, b=%d\n", a, b );
return 0;
}
#endif
#if 0
#include <stdio.h>
void swap_int( int *a , int *b )
{
int t;
t = *a;
*a = *b;
*b = t;
}
void swap_double( double *a , double *b )
{
double t;
t = *a;
*a = *b;
*b = t;
}
int main()
{
double ad=3., bd=4.;
int a=3, b=4;
swap_int( &a, &b );
swap_double( &ad, &bd );
printf("main : ad=%lf, bd=%lf\n", ad, bd );
printf("main : a=%d, b=%d\n", a, b );
return 0;
}
#endif
#if 0
#include <stdio.h>
#define TYPE int
void swap( TYPE *a , TYPE *b )
{
int t;
t = *a;
*a = *b;
*b = t;
}
int main()
{
double ad=3., bd=4.;
int a=3, b=4;
swap( &ad, &bd );
swap( &a, &b );
printf("main : ad=%lf, bd=%lf\n", ad, bd );
printf("main : a=%d, b=%d\n", a, b );
return 0;
}
#endif
#if 0
#include <stdio.h>
void swap( int *a , int *b )
{
int t;
t = *a;
*a = *b;
*b = t;
}
int main()
{
int a=3, b=4;
swap( &a, &b );
printf("main : a=%d, b=%d\n", a, b );
return 0;
}
#endif
#if 0
#include <stdio.h>
void swap( int a , int b )
{
int t;
t = a;
a = b;
b = t;
printf("swap : a=%d, b=%d\n", a, b );
}
int main()
{
int a=3, b=4;
swap( a, b );
printf("main : a=%d, b=%d\n", a, b );
return 0;
}
#endif
#if 0
#include <stdio.h>
int main()
{
int a=3, b=4;
int t;
t = a;
a = b;
b = t;
printf("a=%d, b=%d\n", a, b );
return 0;
}
#endif
'Computer Science' 카테고리의 다른 글
최신 매크로 분석 container_of (0) | 2021.04.29 |
---|---|
타입의 의존성 제거(container_of 버전) (0) | 2021.04.28 |
Boyer-Moore Pattern Matching (0) | 2021.04.24 |
Knuth-Morris-Pratt Pattern Matching (KMP) (0) | 2021.04.24 |
Morris-Pratt Pattern Matching (0) | 2021.04.24 |
댓글