2014-04-27 4 views
0

lvalue-to-rvalue 변환을 수행 할 때 컴파일러가 (어셈블리 수준에서) 장면 뒤에서 무엇을합니까? lvalue는 임시 메모리 (레지스터)로 읽습니까?lvalue-to-rvalue 변환을 수행 할 때 컴파일러는 무엇을합니까?

+5

거의 모든 컴파일러는 생성하는 코드를 정확히 볼 수있는 어셈블리 파일을 생성 할 수 있습니다. –

+3

확실히 이것은 컴파일러, 컴퓨터 아키텍처, 최적화 수준 또는 바이너리에 디버그 정보가 있는지 여부에 따라 다릅니다. –

+0

Nothing. 모든 lvalue는 rvalue입니다. 그 반대는 성립하지 않는다. lvalue의 특징은 값뿐만 아니라 주소도 있다는 것입니다. – EJP

답변

1

각 특정 경우에서 컴파일러가 수행하는 작업은 컴파일러 구현, 현재 최적화 수준, 그 시점에서 적용되는 최적화 작업의 정확한 방식 등에 따라 달라집니다.

하지만 기본적으로 좌변 값과 좌변 값의 변환은 저장되어있는 주소 (대략 좌변 값을 나타냄)에서 메모리 내용 (대략 rvalue를 나타냄)을 읽는 것과 같습니다.

관련 문제