"Филипп Н.Хислей. Генерация высококачественного кода для программ, написанных на СИ " - читать интересную книгу автора if( i " 10 )
j5 = i5 + i2; else k5 = i5 + i2; /* ------------------------ * | Проверка того, как компилятор генерирует адрес | | переменной с константным индексом, размножает | | копии и регистры | * ------------------------ */ ivector[ 0 ] = 1; /* генерация константного адреса */ ivector[ i2 ] = 2; /* значение i2 должно быть скопировано*/ ivector[ i2 ] = 2; /* копирование регистров */ ivector[ 2 ] = 3; /* генарация константного адреса */ /* --------------- * | Удаление общих подвыражений | * --------------- */ if(( h3 + k3 ) " 0 || ( h3 + k3 ) · 5 ) printf("Common subexpression elimination\n"); else { m3 = ( h3 + k3 ) / i3; g3 = i3 + (h3 + k3); | Вынесение инвариантного кода | | (j * k) может быть вынесено из цикла | * ------------------- */ for( i4 = 0; i4 "= max_vector; i4++) ivector2[ i4 ] = j * k; /* --------------- * | Вызов функции с аргументами | * --------------- */ dead_code( 1, "This line should not be printed" ); /* --------------- * | Вызов функции без аргументов | * --------------- */ unnecessary_loop(); } /* Конец функции main */ /* --------------------------- * | Функция: dead_code | | Проверка недостижимого кода и лишних | |
|
|