95% 이해했다는 ㅇㅇ충입니다 ㅠㅠ

5% 부족한걸 나중에 다시 보면 이해하겠지 하고 넘어갔는데,

방금 다시 봤는데 이해가 안되네요 ㅜㅜ

 

1. src 의 정렬되기 전 앞부분 짜투리인 3바이트를 먼저 dst + 3 위치에 1 byte 단위로 복사하고 나면,

2. memcpy( dst + 6, src + 4, size - 3 ); 를 해야 되는 셈이지. ( src + 4 는 이제 정렬된거 ) 

3. size - 3 도 4의 배수에 맞추어야 하니까 남은 짜투리를 1 byte 단위로 복사하면 되는거구.


즉, 출발이나 도착 한쪽은 aligned 를 맞출수 있지만 다른쪽은 항상 unaligned 처리를 해야 한다는거야.

 

그러면 어쩔수 없지, src 에서 2번 읽은걸 dst 에 조합해서 넣어줘야함.

이때 bit shift, bit-wise or, bit-wise and 등을 써줘야 하지.

귀찮게 막~~~ 그걸 저 주소 조합별로 다 구현해야함.

최대한 단순화 시켜도 꽤 복잡해져. -> 그래서 컴파일러가 소스 작성 의도를 파악하기 힘들지.

 

굵은 글씨가 이해가 안됩니다..

엉엉 ㅠㅠ