Хонич А.
Как самому создать трехмерную игру
стр. 16

привыкнуть к тому, что вам теоретически не нужна больше нижняя память. Гораздо важнее объем памяти, “лежащий” за пределами первого мегабайта, т.е. extended memory'. Как это ни странно, но для запуска программ, написанных на WATCOM’e (независимо от размера самой программы), порой достаточно меньше 200К нижней памяти. Однако это далеко не всегда так. То, что код и данные программы не используют нижнюю память, совершенно не означает, что последняя пу стует. Это было бы расточительством - не использовать лишние 512К памяти, поэтому’ программисты чаще всего используют эту память для своих ну жд: например, буфера экранов, буфер DMA для оцифрованного звука, всевозможные таблицы и др., т.е. как данные. Что касается вообще работы с памятью, то, если вы работаете в однозадачном режиме, вам больше не нужны сегменты. Вы о них как бы забыли, хотя теоретически они есть. В этом слу чае, например при обращении к графическому экрану, который обычно имеет адрес 0ха000:0, вы будете использовать физический адрес экрана ОхаОООО. Как же, спросите вы, пользоваться прерываниями, которые требуют в качестве аргумента адрес: сегмент плюс смещение? Здесь имеются два варианта:

1.    Использовать прерывание защищенного режима (int386). Для некоторых прерываний в качестве адреса можно передавать физический адрес памяти без сегмента (подробности смотрите в help’e).

2.    Использовать эмуляцию прерываний реального режима с использованием функции DPMI 300h. При этом все параметры передаются гак, как будто вы работаете в реальном режиме и записываются в структуру RMI (Real Mode Info), а адрес этой структуры передается в регистре EDI при вызове прерывания DPMI (для тех, кто забыл, напомню, что номер DPMI прерывания: 0x31).

Если мы уже заговорили о памяти, то немного слов о функциях распределения памяти. Для использования памяти, находящейся выше мегабайта, служат функции:

malioc(int size) - для выделения памяти необходимого размера;

free(void *point) - для освобождения памяти. Для использования памяти ниже мегабайта используется функция DPMI 100Н.

А теперь рассмотрим наиболее существенные отличия WATCOM C/C++ от BORLAND C++.

Во-первых, тип данных - Int в WATCOM’e для 32-битного кода имеет размер 32 бита. В общем, это не имеет значения, если только вы не использу ете какие-либо внешние структуры, в которых важны номера смещений.

Во-вторых, в WATCOM’e, в отличие от BORLAND’a, очень сложный встроенный ассемблер. Наиболее простой выход здесь - написать часто используемые макросы на ассемблере, используя директиву компилятора “pragma aux’’ и использовать этот макрос как функцию. Например, для быстрой пересылки в памяти макрос “move” может выглядеть так:


Новости
Выход Fear the Wolves в раннем доступе в Steam отложили
Чернобыльская королевская битва Fear the Wolves от бывших авторов "Сталкера" должна была уже сегодня выйти в раннем доступе в Steam, но игра задержится - участники закрытого бета-теста выявили множество проблем, так что релиз решили отложить.
Похоже, авторы God of War уже приступили к работе над продолжением
В начале июня старший художник Sony Santa Monica Нейт Стивенс рассказал, что следующая часть God of War станет «масштабнее, лучше и продолжительнее», а команде предстоит поломать голову над тем, как бы превзойти самих себя в сиквеле.