2011-07-05 4 views
1

http://cm.bell-labs.com/who/ken/trust.html을 다시 읽었으므로 스테이지 II의 개념을 수직 탭으로 파악할 수 없습니다. 내 질문에 너희들이있다 : \ V 이스케이프 문자가 포함 된 문자가 두번 검사되고 있습니까? 내가보기에이 새로운 컴파일러를 설치하면 \ v가 사용될 때 그림 3의 코드를 통과 한 다음 리턴 ('\ v') 문에서 그림 4의 코드가 실행됩니다. 그런 다음 세로 탭의 실제 ASCII 표현을 리턴합니다. 컴파일러가 현재 컴파일러를 더 잘 나타내지 만 컴파일 시간이 느려지지는 않습니까? 제 질문에 대해 다시 말해 주길 바랍니다. 건배!컴파일러/부트 스트랩 - 오래된 부트 스트랩 컴파일러를 다시 컴파일하여 속도가 느려 집니까?

답변

0

코드가 두 번 이동하지 않습니다. 초기 상태에서 \v에는 정의 된 의미가 없으므로 그림 3을 컴파일 할 수 없습니다. (그냥 내부 컴파일러 을 정의 멋진 변수로 생각합니다.)

당신이 그림을 컴파일하면. 4의 코드는 당신이 11 동안 그 \v 스탠드를 언급했다. 생성 된 컴파일러는 \v을 값으로 매핑 할 수 있으므로 \v을 나타내는 \v을 정의 할 수 있습니다. 실제 변수

비 컴파일러의 예는 다음과 같이 될 것이다 :

x = 11; 
/* ... */ 
x = x; 

당신이 정의하면 무엇을, 당신은 자신에게 그 값을 할당을 사용하고도 수에 대한 x 의미합니다. 파서와의 가장 큰 차이점은 동일한 파일에서 서로 다른 위치에 두 개의 선언을하는 대신 \v의 정의가 서로 다른 두 버전의 컴파일러에 분산되어 있으며 두 번째 컴파일러는 새 컴파일러로 컴파일됩니다 (이전 컴파일러 이 정의를 포함하지 않음).

+0

아 이제 알겠습니다. 난 그저 새로운 컴파일러에서 그림 3 코드를 계속 참조해야한다고 생각하지만, 기본적으로 11 바이트 코드에서 \ v를 대체합니다. 따라서 새로운 컴파일러로 해당 소스를 다시 컴파일하면 계속해서 같은 바이트를 얻을 수 있습니다. 암호. 추상화가 나를 혼란스럽게 만들었다. 고맙습니다! – edaniels

관련 문제