글쓴이: 익명 사용자 / 작성시간: 일, 2002/07/14 - 5:00오후
volatile이라는 수식어의 정확한 사용 용도를 알고 싶습니다.
const는 읽기 전용 기억 장소에 할당되어서 최적화시 효과를 얻을 수
있다고 알고 있는데 그럼 volatile은 최적화를 억제하나요?
그럼 또 최적화를 시키면 일반 오토 변수들은 가능한한 레지스터로
사용할 수 있게 컴파일 되는 겁니까?
아 참 static 선언된 지역변수나 extern 전역변수 모두 데이타 세그먼트
에 할당되는거 맞죠?
Re: volatile 관련 질문
최적화 시키지 않습니다.
volatile는 코드 최적화 과정에서 일어 날수있는 오류 방지를 위해 쓰입니
다.
최적화를 하게되면 중복적인 read와 write에 대해 하나로 묶에 됩니다.
예를 들면 의도적인 read가 계속 일어나야 할부분에서 최적화를 통해 하나
의 read만 일어나는 것을 방지 하기 위해 쓰입니다.
[질문] 감사합니다. 이거 좀 봐주세요.
일단 제 생각을 말씀들릴께요.
최적화라는 단계에 대해 제가 알고 있는 겁니다.
gcc에서 -O 옵션으로 최적화를 거치는 내용입니다.
일단 변수형중에
1. 전역 즉, global인 것은 데이터 세그먼트에 저장된다.
2. local인 것들 중 static 선언 또한 데이터 세그먼트에 저장된다.
3. local인 것들 중 일반적으로 선언된 것들 즉, auto 선언은
스택 세그먼트에 저장된다.
이고
최적화를 거치면 3번 즉, local인 것들 중 static 선언 되지 않은 것들은
가능하면 register로 등록한다.
이 때 volatile은 register로 등록 가능한 것들을 등록하지 않게 만든다.
까지 입니다.
이게 맞게 이해한 건가요?
댓글 달기