컴파일러가 빌드할 때 최적화를 막음

즉 예를 들면

for(int i=0; i<size; i++)에서

i는 CPU의 특정 레지스터에서 계속 증가됨

즉 메모리에 i를 위해 공간을 할당해서 i를 증가시키는 게 아니라

CPU의 특정 레지스터에서 증가시킴

이런 것을 컴파일러가 수행하는 최적화라고 함

그런데 말입니다

volite int i 라고 선언을 해 버리면

컴파일러는 volite라는 키워드를 인지하고 

위에서 말한 최적화를 수행하지 않고

메모리에 i를 위해 할당한 공간에서 인크리먼트 연산을 수행하도록 컴파일 합니다

volite가 유용하게 쓰이는 분야는

ARM Core를 베이스로 한 Application Processor를 탑재한

임베디드 디바이스 펌웨어 코드(커널 또는 디바이스 드라이버)에서 흔하게 사용합니다

즉 하드웨어 레지스터 주소를 액세스해서 값을 읽어 오거나 써야 할 때

volite 키워드를 선언합니다

그래야 컴파일러가 최적화 작업을 못해

실제 레지스터 주소에 실시간?으로 액세스할 수 있도록 하는 것입니다


도움이 좀 되셨기를 ㅎㅎ