Чтение онлайн

на главную

Жанры

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

Хислей Филипп Н.

Шрифт:

¦ представляет хороший стиль программирования. ¦

¦ ¦

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

 

 

#include <stdio.h>

#include <string.h>

 

#define max_vector 2

#define constant5 5

 

typedef unsigned char uchar;

 

int i, j, k, l, m;

int i2, j2, k2;

int g3, h3, i3, k3, m3;

int i4, j4;

int i5, j5, k5;

 

double flt_1, flt_2, flt_3, flt_4, flt_5, flt_6;

 

int ivector[ 3 ];

uchar ivector2[ 3 ];

short ivector4[ 6 ];

int ivector5[ 100 ];

 

#ifndef NO_PROTOTYPES

void dead_code( int, char * );

void unnecessary_loop( void );

void loop_jamming( int );

void loop_unrolling( int );

int jump_compression( int, int, int, int, int );

#else

void dead_code;

void unnecessary_loop;

void loop_jamming;

void loop_unrolling;

int jump_compression;

#endif

 

int main( argc, argv )
/* optbench */

int argc;

char **argv;

{

 

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

¦ Размножение констант и копий ¦

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

 

j4 = 2;

if( i2 < j4 && i4 < j4 )

i2 = 2;

 

j4 = k5;

if( i2 < j4 && i4 < j4 )

i5 = 3;

 

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

¦ Свертка констант, арифметические тождества ¦

¦ и излишние операции загрузки/сохранения ¦

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

 

i3 = 1 + 2;

flt_1 = 2.4 + 6.3;

i2 = 5;

j2 = i + 0;

k2 = i / 1;

i4 = i * 1;

i5 = i * 0;

 

#ifndef NO_ZERO_DIVIDE

/*

* Некоторые компиляторы распознают ошибку

* деления на нуль и не генерируют объектный код

*/

i2 = i / 0;

flt_2 = flt_1 / 0.0;

#else

printf( "This compiler handles divide-by-zero as
\

an error
\n
");

#endif

flt_3 = 2.4 / 1.0;

flt_4 = 1.0 + 0.0000001;

flt_5 = flt_6 * 0.0;

flt_6 = flt_2 * flt_3;

 

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

¦ Лишнее присваивание ¦

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

 

k3 = 1;

k3 = 1;

 

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

¦ Снижение мощности ¦

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

 

k2 = 4 * j5;

for( i = 0; i <= 5; i++ )

ivector4[ i ] = i * 2;

 

 

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

¦ Простой цикл ¦

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

 

j5 = 0;

k5 = 10000;

do {

k5 = k5 - 1;

j5 = j5 + 1;

i5 = (k5 * 3) / (j5 * constant5);

} while ( k5 > 0 );

 

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

¦ Управление переменной индукции цикла ¦

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

for( i = 0; i < 100; i++ )

ivector5[ i * 2 + 3 ] = 5;

 

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

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

Популярные книги

Сердце Дракона. Том 20. Часть 1

Клеванский Кирилл Сергеевич
20. Сердце дракона
Фантастика:
фэнтези
боевая фантастика
городское фэнтези
5.00
рейтинг книги
Сердце Дракона. Том 20. Часть 1

Рота Его Величества

Дроздов Анатолий Федорович
Новые герои
Фантастика:
боевая фантастика
8.55
рейтинг книги
Рота Его Величества

Седьмая жена короля

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Седьмая жена короля

Шериф

Астахов Евгений Евгеньевич
2. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
6.25
рейтинг книги
Шериф

Волк 4: Лихие 90-е

Киров Никита
4. Волков
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волк 4: Лихие 90-е

Жандарм 2

Семин Никита
2. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Жандарм 2

Аномальный наследник. Пенталогия

Тарс Элиан
Аномальный наследник
Фантастика:
фэнтези
6.70
рейтинг книги
Аномальный наследник. Пенталогия

Все зависит от нас

Конюшевский Владислав Николаевич
2. Попытка возврата
Фантастика:
альтернативная история
9.24
рейтинг книги
Все зависит от нас

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Ретроградный меркурий

Рам Янка
4. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ретроградный меркурий

Лорд Системы 3

Токсик Саша
3. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 3

Вперед в прошлое 2

Ратманов Денис
2. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 2

Бальмануг. (Не) Любовница 2

Лашина Полина
4. Мир Десяти
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Бальмануг. (Не) Любовница 2

Магия чистых душ 2

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.56
рейтинг книги
Магия чистых душ 2