0

我想测试一个小的 ANSI C 解释器。我的工具解释了我的 C 程序。它不产生机器码;执行后我无法访问堆/堆栈!我正在考虑针对 GCC 或类似的东西验证返回值/输出。

我正在寻找适合我的东西,但我几乎找不到任何免费或开源的东西。

有人对如何测试我的口译员有想法/建议吗?任何人都可以推荐类似测试套件的东西吗?还是一包测试用例?

4

1 回答 1

0

我还写了一个 C 解释器,主要依靠 gcc.c - 折磨/执行测试用例。该测试套件由“历史上很容易破坏的代码片段”组成。该测试用例的优点是,它们必须被执行以提供结果(而不是,例如,仅编译),然后将结果与预期结果相匹配。您不需要将它与由 GCC 编译的执行程序的结果进行比较。您基本上只需要在目录中包含文件并执行它们,这与其他一些测试套件形成对比,您必须从配置文件或类似文件中解析预期结果。您可以从GCC 存储库下载测试。

对您来说一个缺点可能是,测试用例通常很广泛,并且还可以包括 GNU 扩展,例如用于执行汇编代码的asm语句或有关如何对齐内存内容的属性。它们还包括一些旧的 K&C 函数样式符号的测试用例,如下例所示(不是从套件中获取的):

int func(a)
int a; 
{
    return a + 1;
}

但是,我仍然建议您查看测试用例,看看您可以执行什么,因为它们还测试了 ASNI C 的许多“正常”极端情况。

于 2014-02-09T06:22:58.423 回答