임베디드 프로그래밍 C 코드 최적화 Blog2Book 시리즈 4
김유진 지음 / 한빛미디어 / 2008년 2월
평점 :
절판


 Blog2Book 시리즈인데.. 개인적으로 저 시리즈 참 맘에 든다..


 내용이 전혀 지루하지 않고.. 매번 재밋게 본 것 같다.


 돈만 많으면 학부 후배들테 사주면 좋겠는데 이놈의 생활고;;


 임베디드 하면 아무래도 이런저런 제약이 심하기 때문에 최적화에 민감할 수 밖에 없다..


 이 책에서는 최적화 하기 위해서 메모리, 코드스타일, 컴파일러 까지 상황에 따라 어떻게


하는 것이 좋을지에 대해 대략.. 잘 설명해 놓았다.


 전에 실제 회사 코딩을 하면서 disassemble 하면서 느낀건데,


 a. for ( i = 0 ; i < 10 ; i++ ) { do () };

 b. for ( i = 10 ; i > 0 ; i-- ) { do () };


 저 두개의 명령어가 하나만큼 차이가 났다.


 위에 같은 경우엔 매번 분기 전에 10에서 i 값을 뺀 후 컨디션에 따른 분기를 했고, 아래 같은


경우에는 바로 i값이 0보다 큰지만 체크 했기 때문에 값을 빼는 연산이 없었던 것이다.


 물론 이런 문제는 컴파일러 관련이기 때문에 모든 상황에 같은 것은 아니다. 실제로 ms.net


을 이용했을 경우는 둘다 동일한 연산량을 가진다.


 전에 volatile 에 관해 살짝 언급한 적이 있는데.. 학부생 당시에는 사실 저걸 사용한적이 


없다.--


 int interrupt_check = 0;


 while ( interrupt_check == 0 )

 {

     check_interrupt();

 }


 void check_interrupt()

 {

     if ( event_interrupt )

         interrupt_check = 1;

  }


 인터럽트가 발생하면 루틴을 빠져나오게 작성했는데 컴파일러 옵션을 o2 였는지 o3 였는지


기억은 안나는데 저렇게 하면 컴파일러가 interrupt_check 는 그냥 상수 0으로 계산해버리고


무한 루프에 빠져 버린다. 저걸 몰라서 인터럽트가 안뜬다 어쩐다 쇼를 했으니;;


 volatile 에 대해 모른다면 꼭! 반드시! 알아내도록 하기 바란다.ㅋ


 어떻게 하면 메모리를 조금 더 줄일수 있을까, 어떻게 하면 코드 사이즈를 더 줄일수 있을까..


이 책을 보면서 정답에 좀 더 쉽게 다가갈 수 있을 것이라 생각한다.;


====================================================================================


 volatile - 함부로 최적화 하지 말고 사용시엔 반드시 메모리에서 값을 가져와서 확인해라..


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo