컴파일러가 언어 Y로 설계된 언어 X가 있다고 가정합니다. 여기서 언어 Y의 컴파일러는 어셈블리 언어로 설계되었습니다. 이제 X로 작성된 코드를 실행하기 위해 명령어는 언어 Y의 도움으로 컴파일됩니다. 예를 들어 X의 명령어는 Y의 컴파일러 역할을하는 Y에 대한 입력으로 표시되어 Y의 컴파일러가이를 실행하고 X에 대한 컴파일 된 코드. 여기에 Y에 제시된 지침은 어셈블리 언어로 컴파일해야합니다.어셈블리 언어로 컴파일러를 설계하는 것보다 다른 언어의 컴파일러로 컴파일러를 설계하는 것이 어떻습니까?
여기서 X의 명령어를 컴파일하려면 Y의 명령어를 컴파일해야합니다. 왜 이렇게 필요한 이유가 무엇입니까?
어셈블리 코드를 사용하여 X에서 명령어를 직접 컴파일하는 것이 위의 경우보다 쉽지는 않습니까? 어떤 의미
당신은 분명히 그것을 자유롭게 할 수 있습니다 .. – harold
'''''''''''''''''''''...' 어셈블러에 평범하지 않은 프로그램을 작성하려고 시도 해본 적이 있습니까? 대답은 다른 유형의 프로그램과 동일합니다. 더 쉽고 빠르며 오류가 발생하기 쉽기 때문입니다. – MikeMB
컴파일러의 백엔드는 컴파일러를 만드는 가장 중요하고 값 비싼 부분입니다. 코드 생성기는 사용할 수 있지만 좋은 옵티 마이저는 매우 중요한 투자이며 성능에 중요합니다. 그런 다음 지원해야하는 모든 아키텍처에 대해 반복해서 작업해야합니다. 다른 사람의 노력을 활용하는 것이 가장 현명한 일입니다. LLVM은 천 파운드 고릴라, JVM과 .NET은 쉽게 만들 수 있습니다. 이제 보편적으로 사용할 수있는 JavaScript 불안감은 오늘날 점점 더 많이 사용됩니다. –