· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Касательно FASM/

<< . 1 . 2 . 3 .

Посл.отвђт Сообщенiе


Дата: Ноя 17, 2004 05:30:29

Иногда - надо, иногда можно и обойтись - тут от прграммы больше зависит.
Регистр очень часто вовсе не лишний, скорость выше, иногда даже код более компактный (как это ни странно на первый взгляд - не стОит забывать, что winAPI не изменяет EBP)
Но дело-то не в этом - использование BP - это необходимость времён ДОСа и 286 процессора, сейчас уже на дворе 2005 год почти :-)

А blabla equ [esp+4*5] - это уж точно изврат, так ошибок не оберёшся, особенно когда добавляешь новые команды и т.п.
Это ладно, если нужно делать mov eax,[blabla] а если push [blabla] или pop [blabla] ?

В том-то вся прелесть FASM, что сделав один раз макросы (или взять уже готовые), можно потом просто писать программы не напрягаясь считая параметры и локальные переменные.


А извращаться тогда уж так:
mov esi,esp
lodsd
xchg ecx,eax
lodsd
xchg edx,eax


Дата: Ноя 17, 2004 05:59:23

„Это ладно, если нужно делать mov eax,[blabla] а если push [blabla] или pop [blabla]?“
А в чем проблема? Все работает.

„...это необходимость времён ДОСа и 286 процессора...“
как и асм :) вон люди щас на дотНЕТ пишут :)


Дата: Ноя 17, 2004 06:35:29

masquer > „А в чем проблема? Все работает“

Тут фишка в том, что push и pop меняют значения esp, причём важно, до или после выполнения команды эти изменения делаются. В общем-то, решение элементарно, но все макросы, которые я видел были не корректны. А правильно так:
macro	push	 arg
{
	push	arg
	__STACK__=__STACK__-4
}

macro	pop	 arg
{
	__STACK__=__STACK__+4
	pop	arg
}



> „как и асм :) вон люди щас на дотНЕТ пишут :)“

Ну вот, началась агитация :-) Я имел ввиду то, что 16 битные x86 просто не имели возможности адресовать память через SP, сейчас же с этим проблем нет. но микрософт вместо новых фич добавляет в MASM новые баги.


Дата: Ноя 17, 2004 08:04:20

S_T_A_S_
Ты хочешь сказать что при применении макросов можно полностью расслабиться, косяк невозможен?


Дата: Ноя 17, 2004 11:31:19

Да, только сами макросы не должны содержать косяков :-)

<< . 1 . 2 . 3 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.062