57段让编译器崩溃的C语言代码.docVIP

  • 1
  • 0
  • 约4.39千字
  • 约 17页
  • 2016-09-19 发布于重庆
  • 举报
57段让编译器崩溃的C语言代码

57段让编译器崩溃的C语言代码 64位平台C/C++开发注意事项 在/en/l/上例出了28个在64位平台上使用C/C++开发的注意事项,对于进入64位时代的程序员应该去看看这28个事项,这些英文读物对于有C/C++功底的朋友读起来应该并不难,我估计大约20-30分钟可以精读完一篇(或者更快),下面是这28个注意事项的列表。相信对大家一点有帮助。Bhui2014 Lesson 01. What 64-bit systems are. Lesson 02. S 导读:本文由犹他州大学的计算机系的 John Regehr 整理。虽然我不清楚到底有多少人喜欢看让编译器崩溃的程序,但这篇文章就是给这些的人(包括我)。我们讨论编译器Bug测试案例的论文就包括很多这种崩溃型的Bug。下文是就是这些 C 语言代码段,由工具逐字输出,代码格式上肯定会有些问题。(代码段后面申明了对应被崩溃的编译器,有读者问为什么没有 MSVC 编译器的,Regehr 回复说他们并没有测试MSVC 。)看完这些程序,我们就能总结出什么东西吗?这很难说 很多 C 语言代码段是不容易看出来有问题,如果了解其中问题,我们需要知道一个特定编译器内部解析代码的细节。C1 : Crashes Clang 2.6 at -O0: static short safe_add_func_int16_t_s_s ( short si1, int si2 ) { return si1 67 ? si1 : si1 + si2; static int func_1 ( ) { int l_462 = 0; g_2 = 0; for ( ; g_2 g_2 = safe_add_func_int16_t_s_s ( g_2, 5 ) ) { g_5 = 1; for ( ; g_5; ++g_5 ) { g_8 = 1; for ( ; g_8 g_8 = g_8 - 1 ) { func_1_l_15 = 1; for ( ; func_1_l_15; func_1_l_15 = func_1_l_15 - 1 ) if ( g_8 ) break; g_371 = l_462; int *l_128 = g_81; *l_128 = *g_39; *g_371 = 0 != 0 ; return 0; int main ( ) { func_1 ( ); crc32_context = g_2; crc32_context += g_5; 导读:本文由犹他州大学的计算机系的 John Regehr 整理。虽然我不清楚到底有多少人喜欢看让编译器崩溃的程序,但这篇文章就是给这些的人(包括我)。我们讨论编译器Bug测试案例的论文就包括很多这种崩溃型的Bug。下文是就是这些 C 语言代码段,由工具逐字输出,代码格式上肯定会有些问题。(代码段后面申明了对应被崩溃的编译器,有读者问为什么没有 MSVC 编译器的,Regehr 回复说他们并没有测试MSVC 。)看完这些程序,我们就能总结出什么东西吗?这很难说 很多 C 语言代码段是不容易看出来有问题,如果了解其中问题,我们需要知道一个特定编译器内部解析代码的细节。C1 : Crashes Clang 2.6 at -O0: static short safe_add_func_int16_t_s_s ( short si1, int si2 ) { return si1 67 ? si1 : si1 + si2; static int func_1 ( ) { int l_462 = 0; g_2 = 0; for ( ; g_2 g_2 = safe_add_func_int16_t_s_s ( g_2, 5 ) ) { g_5 = 1; for ( ; g_5; ++g_5 ) { g_8 = 1; for ( ; g_8 g_8 = g_8 - 1 ) { func_1_l_15 = 1; for ( ; func_1_l_15; func_1_l_15 = func_1_l_15 - 1 ) if ( g_8 ) break; g_371 = l_462; int *l_128 = g_81; *l_128 = *g_39; *g_371 = 0 != 0 ; return 0; int main ( ) { func_1 ( ); crc32_context = g_2; crc32_context += g_5; 导读:本文由犹他州大学的计算机系的 John Regehr 整理。虽然我不清楚到底有多少人喜欢看让编译器崩溃的程序,但这篇文章就是给这些的人(包括我)。我们讨论编译器Bug测试案例的论文就包括很多这种崩溃型

文档评论(0)

1亿VIP精品文档

相关文档