문제

C 컴파일러가 필요하다고 가정합니다.그 정도의 컴파일러의 복잡성을 감안할 때, C- 유사한 언어로 컴파일러를 쓰는 것이 바람직하다.Best에서 C 컴파일러는 C로 작성되지만 C 컴파일러가 시작해야합니다.컴파일러의 초기 반복 중 하나를 만드는 데 실수가 발생하면 전파 될 수 있습니다.컴파일러는 어떻게 이것이 일어나지 않도록하는지 확인할 수 있습니까?분명히 프로세서조차도 아니지만 프로세서조차도 아니지만 어떻게 든 안정성을 측정하지 않았다면 컴파일러가 안정적인지 여부를 알지 못합니다.어떤 가정이 있었고 어떻게 정당화됩니까?나는 그것이 아키텍처에 따라 다르게 될 것이라고 상상할 것이다.

편집 : 안정성으로 코드가 의도 한대로 실행된다는 것을 의미합니다.

도움이 되었습니까?

해결책

컴파일러 작성자가 이것을 사용하는 단어는 "적합성"입니다.언어 사양을 올바르게 구현하는 컴파일러는 적합합니다.비즈니스의 일환으로 프로그래밍 언어를 포함하여 다양한 표준에 대한 적합성 테스트를 판매하는 회사가 있습니다.

사고로 컴파일러 세대를 통해 전파 할 수있는 오류가 발생하지 않습니다 ( 의도적으로 일어났습니다 ).

다른 팁

컴파일러에는 미묘한 오류가 포함되어 있습니다.뻔뻔스런 오류가 감지되고 고정되기 때문에 뻔뻔스러운 오류가 없습니다.

미묘한 오류가있는 컴파일러에 의해 컴파일 된 컴파일러는 뻔뻔스런 오류가있는 경향이 있습니다.그들은 너무 뻔뻔 스럽기 때문에 쉽게 감지 할 수 있습니다.이러한 뻔뻔스런 오류가 완벽하게 훌륭한 소스 코드로 생산되기 때문에 수정하기가 어려울 것입니다. 그래서 누구든지 실제 문제를 찾는 데 어려움이 있습니다.

솔루션은 버그가 매우 드뭅니다. 컴파일러 내에서 매우 드문 품질의 충분한 품질을 컴파일하게하는 것입니다.또한 컴파일러 버그가 매우 복잡한 코드에 영향을 미치므로 컴파일러 작성기는 간단하고 공통 코딩 패턴을 따르는 코드를 작성해야합니다.

하나의 대답은 테스트, 테스트, 테스트 중입니다.예를 들어,GCC에는 컴파일러가 빌드 될 때마다 검사가 끊어진 테스트 세트가 있습니다.많은 컴파일러가 소위 트리플 테스트를 통과해야합니다. 컴파일러 A를 사용하여 컴파일러 C를 컴파일하여 C_1을 제공합니다.C_1을주는 C_1을 사용하여 C_1을 C_2로 컴파일하고 C_3을주는 C_2를 컴파일하십시오.이제 C_2 및 C_3은 C로 컴파일되었으며 동일해야합니다.그렇지 않다면 물고기가 무슨 일이 일어나고 있습니다.

regher의 아카데미아에 임베디드 " 블로그, 그는 주변에서 일하는 사람들 중 하나입니다LLVM 컴파일러 도구는 컴파일러를 더 잘 만드는 데 사용되는 도구 및 기술을 정기적으로 닿습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top