我正在为多个CPU架构上的汇编程序存根编写测试套件。存根旨在将参数传递给C回调。
我已经编写了测试来覆盖多个场景(例如,通过值传递struct,混合不同原生大小的参数,将float args与int混合等)我现在想要测试回调来执行某些事情这将耗尽大量的寄存器/堆栈插槽等。
我的想法是尝试清除仅由fluke工作的实现(例如,值没有正确地放在堆栈上,但它恰好仍然存在于某个寄存器中,因此您可以使用它等等)。
任何人都可以推荐一款可以用作测试的好C / C ++吗?我意识到寄存器的使用在架构之间变化很大,并且根本无法保证它会得到完全的覆盖,但是有一些能够给出合理的信心的东西会很好。感谢
答案 0 :(得分:2)
C / C ++标准中没有任何内容可以帮助您。最终唯一可靠的方法就是编译器编写者的方式。他们研究编译器生成的代码,并想出打破它的方法。
话虽如此,我可以想到一些可能会消除一些常见问题的策略。
您将找到的唯一预编写的代码是您所选编译器的编译器合规性套件。
打破编译器很有趣。希望这里的东西可以帮助你做到这一点。