Рубрика: Assembler

Работа с флагами в играх

Опубликовал – 09.02.2011

Доброе время суток! Вот уже очень давно, зрела мысль в моей голове, написать на эту тему статейку… И, наконец, совпало свободное время с уже зрелой мыслью – получайте плод воображения автора, надеюсь старался не зря.

Как Вы поступаете, к примеру, если вам нужно хранить много разных флажков в Вашей игре? Создаете кучу bool переменных? Когда то у меня был некий объект, который хранил базовые флаги всех объектов в игре, это выглядело примерно так: Далее…

[Упражнение 0003] Изучаем алгоритмы

Опубликовал – 30.09.2010

Новая задачка, товарищи. Проанализируйте код и назовите имя ф-ции.

inline float xxx(float x)
{
	float retval;

	__asm {
		mov		eax, x
		sub		eax, 0x3F800000
		sar		eax, 1
		add		eax, 0x3F800000
		mov		[retval], eax
	};

	return retval;
}

Незабываем прокомментировать свой ответ. Вопрос скорей на знание алгоритма, нежели языка.

P.S. Этот кусок кода я взял из исходников quake 2.

[Упражнение 0002] Простое упражнение декомпиляции для начинающих (часть 2)

Опубликовал – 26.09.2010

Друзья, день добрый! Сегодня, я напишу вам новую задачку, аналогичную первой. Условия остаются те же – проанализировать код и понять что он делает:

...
mov dword ptr [esi], 1
xor edx, edx
mov [ebx], edx
jmp short loc_4012F1
loc_4012E8:
mov ecx, [esi]
imul ecx, [esi]
mov [esi], ecx
inc dword ptr [ebx]
loc_4012F1:
cmp dword ptr [ebx], 8
jl short loc_4012E8
...

На выходе должен получиться C/C++ код или псевдокод. Комментарии приветствуются. :) Наслаждайтесь!

[Упражнение 0001] Простое упражнение декомпиляции для начинающих

Опубликовал – 23.09.2010

Ваша цель – проанализировать следующий, генерированный компилятором код и понять что он делает:

...
mov edx, Var1
mov ecx, Var2
mov eax, edx
imul ecx
mov edx, eax
imul edx, eax
mov Var3, ecx
...

У вас должен получится правильный C/C++ код или псевдокод. Не запрещается его комментировать.