A-tit indd


Паттерны программирования игр



Download 3,35 Mb.
Pdf ko'rish
bet166/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   162   163   164   165   166   167   168   169   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

Паттерны программирования игр
— Паттерны поведения
225
В простейшем виде процедуры чуть-чуть слож-
нее обычных переходов — все остается по-прежне-
му, только ВМ поддерживает второй стек, где содер-
жится информация 
возврата 
из процедуры. Когда 
выполняется инструкция «вызова», ВМ помещает 
индекс текущей инструкции в стек, а затем проис-
ходит переход к вызываемому байт-коду. Когда до-
ходит до «возврата», ВМ извлекает индекс из стека 
возврата и переходит туда.
Как представляются значения?
Наша виртуальная машина работает только с одним ти-
пом значений, целочисленным. Поэтому ответ очеви-
ден: стек — всего лишь стек значений типа 
int
. Более 
полнофункциональные ВМ поддерживают больше ти-
пов данных: строки, объекты, списки и так далее. Вам 
надо решить, как их хранить.
• Единый тип данных
• Это просто
. Вам не нужно беспокоиться о марки-
ровке, преобразованиях и проверке типа.
• Вы не можете работать с разными типами дан-
ных
. Это очевидный недостаток. Попытка хранить 
разные типы данных в едином представлении —
например, чисел как строк — не лучшее решение.
• Вариант с маркировкой
Довольно распространенное представление для язы-
ков с динамической типизацией. Каждое значение 
состоит из двух частей. Первое — это маркер типа 
enum
, который определяет, какой тип значения хра-
нится.
enum ValueType
{
TYPE_INT,
TYPE_DOUBLE,
TYPE_STRING
};


226
Байт-код (Bytecode) — 
Паттерны программирования игр
Остальная часть битов интерпретируется в зависи-
мости от этого маркера типа, например:
struct Value
{
ValueType type;
union
{
int intValue;
double doubleValue;
char* stringValue;
};
};
• Значения известного тип
а. Преимущество в том, 
что тип значения можно проверить прямо во вре-
мя выполнения. Это важно при динамической дис-
петчеризации и помогает избежать ошибки (быва-
ет, мы пытаемся выполнить операции над типами, 
которые их не поддерживают).
• Занимает больше памяти
. Каждое значение ис-
пользует несколько дополнительных бит, в которых 
определен его тип. А на таком низком уровне, как 
виртуальная машина, один лишний бит тут или там 
в итоге превращается в снежный ком.

Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   162   163   164   165   166   167   168   169   ...   313




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish