Adi*_*gal 39 compiler-construction
像所有软件一样的编译器也容易出错,逻辑错误.
如何验证编译器生成的输出.通常,我的问题是(是)
如何验证生成的机器代码是否正确?
如何确保生成的机器代码符合语言规范.
选择一个开源项目(在C中,如果还在C中编写编译器)只是通过"编译器"编译它是否有意义.在这种情况下,如何判断编译器的行为是否符合预期.
是否有语言标准委员会提供的"语言符合"编译器必须满足的正式测试用例(文献)?
什么是"赠送",编译器编译的程序中的问题是编译器错误而不是程序错误.
- 主流编译器混淆并编译代码错误的任何例子?
任何文献的链接将不胜感激.
通常的做法是创建一大组小程序,每个程序都演示编译器的一个方面.这些将包括编译的程序和不应编译的程序.一般情况下,不会检查后端出现的ASM,而是运行程序并检查输出.至于如何确保测试用例中没有错误:将它们缩小,如每个5-10行.
这些测试套件可能非常大,如数百到数千个测试(例如:D编程语言的过时测试套件),并且通常包括针对所报告的每个错误的一个或多个测试用例.