/* Simple test program: bubble sort of a fixed table. */ /* This demonstrates some of the compiler's common-subexpression*/ /* elimination capabilities. For example, inspect the code */ /* generated for procedure Sort_array. See the Programmer's */ /* Guide for how to request an assembly listing on your host. */ typedef unsigned char boolean; void Sort_array(); int Tab[100]; main () { int I,J,K,L; for (L = 0; L < 1000; L++) { /* Initialize the table that will be sorted. */ K = 0; for (I = 9; I >= 0; I--) for (J = I*10; J < (I+1)*10; J++) Tab[K++] = J&1 ? J+1 : J-1; /* Print_array(); */ Sort_array(Tab,99); /* Sort it. */ /* Print_array(); */ } return 0; } void Sort_array(Tab,Last) int Tab[]; int Last; { boolean Swap; int Temp,I; do { Swap = 0; for (I = 0; I Tab[I+1]) { Temp = Tab[I]; Tab[I] = Tab[I+1]; Tab[I+1] = Temp; Swap = 1; } } while (Swap); } void Print_array() { int I,J; /*printf("\nArray Contents:\n");*/ for (I=0; I<=9; I++) { /*printf("%5d:",10*I); */ for (J=0; J<=9; J++); /*printf("%5d",Tab[10*I+J]); */ /* printf("\n");*/ } }