2014-02-28 6 views
2

glibc 소스 코드를 읽는 동안 strcat.c에서 흥미로운 주석을 발견했습니다. 누구나이 최적화가 어떻게 작동하는지 설명 할 수 있습니까?메모리를 읽는 동안 변수가 증가합니다.

/* Make S1 point before the next character, so we can increment 
     it while memory is read (wins on pipelined cpus). */ 
     s1 -= 2; 

     do 
     { 
      c = *s2++; 
      *++s1 = c; 
     } 
     while (c != '\0'); 
+0

컴파일하고 objdump하면 기적이 드러납니다. :디 – Stolas

답변

1

파이프 라인 된 CPU는 몇 가지 작업을 병렬 처리 할 수 ​​있습니다. 예를 들어, S1에서 주소를 읽는 동안 이전 주소를 증가시킬 수 있습니다.

0

*s2에서 문자를 가져 오는 동안 s1의 증가분을 수행 할 수 있음을 의미하므로 무료입니다.