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

/* ----------------------- *

¦ Глубокие подвыражения ¦

* ----------------------- */

 

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 ¦

¦ Проверка недостижимого кода и лишних ¦

¦ присваиваний. Не должен генерироваться код. ¦

* ------------------------------------------------------ */

 

void dead_code( a, b )

int a;

char *b;

{

int idead_store;

 

idead_store = a;

if( 0 )

printf( "%s\n", b );

} /* Конец dead_code */

 

 

/* ---------------------------------------------------- *

¦ Функция: unnecessary_loop ¦

¦ Цикл в следующей функции ненужен, так как ¦

¦ значение присваивания постоянно. В идеале ¦

¦ цикл должен быть удален. ¦

* ---------------------------------------------------- */

void unnecessary_loop()

{

int x;

 

x = 0;

for( i = 0; i < 5; i++ ) /* Цикл не должен генерироваться*/

k5 = x + j5;

} /* Конец unnecessary_loop */

 

/* ---------------------------------------------------- *

¦ Функция: loop_jamming ¦

¦ Два цикла в этой функции имеют одинаковые ¦

¦ заголовки и могут быть слиты в один. ¦

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных