Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Листинг 18.2. Функции библиотеки системы с фиксированной запятой (FIX.C).

Двери и лифты | Специальные эффекты и движущиеся стены | ТЕХНИКА СОЗДАНИЙ ПАРАЛЛАКСА | Листинг 17.1. Файл заголовка демонстрационной программы циклического скроллинга (PARAL.H). | Листинг 17.2 Демонстрационная программа повторяемого смещения. | Листинг 17.3. Простой двойной параллакс (PARAL1.C). | Листинг 17.4. Оптимизированная подпрограмма (BLIT.ASM). | Листинг 17.6. Демонстрационная программа мозаичного смещающегося слоя (TILES.C). | Листинг 17.7. Проверка вертикальной трассировки. | ТЕХНИКА ОПТИМИЗАЦИИ |


Читайте также:
  1. II. Функции школьной формы
  2. II. Функции школьной формы
  3. II. Функции школьной формы
  4. II. Функции школьной формы
  5. II. Функции школьной формы
  6. include "widgets/Common.h" // общие функции
  7. JOURNAL OF COMPUTER AND SYSTEMS SCIENCES INTERNATIONAL (ИЗВЕСТИЯ РАН. ТЕОРИЯ И СИСТЕМЫ УПРАВЛЕНИЯ)

// ВКЛЮЧАЕМЫЕ ФАЙЛЫ ///////////////////////////////

#include <math.h>

#include <stdio.h>

// определим наш новый тип чисел с фиксированной запятой

typedef long fixed;

//ФУНКЦИИ ///////////////////////////////////////////

fixed Assign_Integer(long integer)

{

return((fixed)integer << 8);

} // конец функции присваивания целочисленного значения ////////////////////////////////////////////////////////////

fixed Assign_Float(float number)

{

return((fixed)(number * 256)};

} // конец функции присваивания значения с плавающей запятой ////////////////////////////////////////////////////////////

fixed Mul_Fixed(fixed fl,fixed f2)

{

return ((fl*f2) >> 8);

} //конец функции умножения ////////////////////////////////////////////////////////////

fixed Add_Fixed(fixed fl,fixed f2)

{

return(f1+f2);

} // конец функции сложения ////////////////////////////////////////////////////////////

Print_Fixed(fixed fl)

{

printf("%ld.%ld", f1>>8, 100*(unsigned long) (f1 & 0x00ff)/256);

} // конец функции вывода числа с фиксированной запятой

// ОСНОВНАЯ ПРОГРАММА //////////////////////////////////////

main(}

{

fixed f1,f2,f3;

fl = Assign_Float(15);

f2 = Assign_Float(233.45);

f3 = Mul_Fixed(f1,f2);

printf("\nf1:");

Print_Fixed(f);

printf("\nf2:");

Print_Fixed(f2);

printf("\nf3:");

Print_Fixed(f3);

} // конец функции main

 

Конечно, в собственных программах вы фактически не будете использовать функции сложения и умножения. Я поместил их здесь только для того, чтобы вы могли поэкспериментировать со свойствами чисел с фиксированной запятой.

Теперь перейдем к встроенному ассемблеру.

 

Встроенный ассемблер

 

Ассемблировать или не ассемблировать: вот в чем вопрос. Почти шекспировская задача и нам ее сейчас предстоит разрешить.

Как я говорил ранее, вы должны использовать MASM и встроенный ассемблер, только если в этом действительно возникает необходимость. Ведь все равно операции, которые вы выполняете, являются машинно-зависимыми по своей природе. Вам не нужен ассемблер ни для чего, кроме создания графики и звука. Ни в коем случае не стоит использовать ассемблер для реализации игровой логики и алгоритмов. Кроме того, если ассемблер вам необходим для увеличения быстродействия, применяйте вместо MASM встроенный ассемблер. Он проще в использовании и его применение отнимает меньше времени при разработке программ. Мы обсудим несколько методов, которые увеличат скорость выполнения ваших программ во много раз.

Теперь рассмотрим некоторые из функций, которые мы написали в предыдущих главах и оптимизируем их с помощью новых технических приемов.

Оптимизация рисования пикселей

Первое, что мы должны сделать, это насколько возможно оптимизировать по быстродействию функцию рисования пикселей. Ведь на ней базируются, все остальные графические построения! Давайте возьмем функцию Plot_Pixel() из Листинга 5.4 (вы найдете ее в пятой главе «Секреты VGA-карт») и поглядим можем ли мы оптимизировать ее дальше. Листинг 18.3 содержит новую функцию.


Дата добавления: 2015-07-12; просмотров: 54 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Листинг 18.1. Сравнение выполнения программы с использованием справочных таблиц и встроенных функций sin и cos (LOOKNUP.C).| Листинг 18.5. Версия функции рисования пикселя на ассемблере.

mybiblioteka.su - 2015-2024 год. (0.007 сек.)