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

на главную

Жанры

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

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

Шрифт:

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

¦ ¦

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

 

 

#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;

 

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

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

Поделиться:
Популярные книги

Особое назначение

Тесленок Кирилл Геннадьевич
2. Гарем вне закона
Фантастика:
фэнтези
6.89
рейтинг книги
Особое назначение

Её (мой) ребенок

Рам Янка
Любовные романы:
современные любовные романы
6.91
рейтинг книги
Её (мой) ребенок

Я Гордый часть 2

Машуков Тимур
2. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый часть 2

Адепт. Том второй. Каникулы

Бубела Олег Николаевич
7. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.05
рейтинг книги
Адепт. Том второй. Каникулы

Императорский отбор

Свободина Виктория
Фантастика:
фэнтези
8.56
рейтинг книги
Императорский отбор

Законы Рода. Том 6

Flow Ascold
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 6

Начальник милиции. Книга 3

Дамиров Рафаэль
3. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 3

Огненный князь 3

Машуков Тимур
3. Багряный восход
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Огненный князь 3

Восход. Солнцев. Книга VI

Скабер Артемий
6. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга VI

Страж. Тетралогия

Пехов Алексей Юрьевич
Страж
Фантастика:
фэнтези
9.11
рейтинг книги
Страж. Тетралогия

Мастер 7

Чащин Валерий
7. Мастер
Фантастика:
фэнтези
боевая фантастика
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Мастер 7

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

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

Сломанная кукла

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

Идеальный мир для Лекаря 18

Сапфир Олег
18. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 18