컴파일러1 [C/C++] Volatile volatile의 필요성/* 작성 코드 */u32 *ptr = (u32 *) 0xE0000300;*ptr = 0x1234;*ptr = *ptr & 0xFF; /* 컴파일러에 의한 최적화 */u32 *ptr = (u32 *) 0xE0000300;*ptr = 0x1234 & 0xFF;상기 예제의 경우 Compiler는 최적화를 위해 *ptr = 0x1234; 를 건너뛰고 맨 마지막 코드처럼 *ptr = 0x1234 & 0xFF; 으로 실행 But, 메모리 주소에 연결된 H/W 레지스터에 값을 쓰는 프로그램의 경우 각각의 write 동작이 H/W에 특정 명령을 전달하는 것이므로, 주소가 같다는 이유만으로 중복되는 write명령을 축약해 최적화 해버리면 H/W가 오동작 이러한 이유에 의해 volitile 키워.. 2024. 8. 9. 이전 1 다음 728x90