Генерация высококачественного кода для программ, написанных на СИ

Автор: Хислей Филипп Н. Жанр: Программирование  Компьютеры и Интернет  Год неизвестен
Закладки
Читать
Cкачать
A   A+   A++
Размер шрифта

Отрывок из книги

x = y + 0; x = y * 0; x = y / 1.0; x = y / 0; должен быть простым константным присваиванием и не должен содержать команд для выполнения арифметических операций. Бдительный компилятор должен пометить последний оператор как ошибочный и не генерировать код для него. "Извлечение общих подвыражений" - это процесс удаления лишних вычислений. Вместо того, чтобы генерировать код для вычисления значения каждый раз, когда оно используется, оптимизирующий компилятор пытается выделить выражение таким образом, чтобы его значение вычислялось только однажды. Там, где это возможно, последующие ссылки на такое же выражение используют ранее вычисленное значение. Выражения y * 3 и a[y*3] являются общими подвыражениями в следующем тексте: if( a[y*3] < 0 || b[y*3] > 10) a[y*3] = 0; Выделение этих выражений приводит к логически эквивалентному тексту: T1 = y*3; A1 = &a[T1]; A2 = &b[T1]; if( *A1 < 0 || *A2 > 10) *A1 = 0; Выделение общих подвыражений обычно происходит внутри оператора или блока. …