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

 WASM Phorum —› WASM.ASSEMBLER —› masm2fasm

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


Дата: Июл 14, 2004 07:36:21

Как бы это перевести в формат понятный fasm'у:
lea eax, seh
push (SEH PTR [eax]).SafeEip  ; <- вот эту строчку


Дата: Июл 14, 2004 08:01:01

Наверное так:
push [eax+SEH.SafeEip]


Дата: Июл 14, 2004 08:16:58

Сам же и отвечаю:
lea eax, [seh]
virtual at eax 
           sh   SEH 
end virtual
push [sh.SafeEip]


Дата: Июл 14, 2004 10:32:42

Дык это тоже самое, что и:
push [eax+sh.SafeEip]


Дата: Июл 14, 2004 11:27:36

S_T_A_S_
Ты прав, так
push [eax+SEH.SafeEip]
тоже самое.


Дата: Июл 14, 2004 13:28:19

Asterix

Вообще, с virtual imho лучше, так и в макросах proc делают. Он как раз для того, что бы избавиться от eax+ используется.
А ещё такой макрос можно попробовать, чтобы писать меньше:
macro   .assume	reg, structure
 {	virtual	at reg
		.#reg structure
	end	virtual	 }

; используем

.assume	eax, SEH
push [.eax.SafeEip] 
Область видимости .eax - до следующей глобальной метки (которая не начинается с точки).
Т.е. как раз в пределах текущей proc

Единственный момент, если в структуре где-то внутри используется alidn, то будут проблемы с компиляцией.
Надо вместо него использовать cспециальный макрос, который написал Privalov:
macro	falign	value
 {	virtual
		inc byte [dword $]
		load addrimm from $-4
	end virtual
	rb (value-1)-(addrimm+value-1) mod value }


Дата: Июл 14, 2004 20:54:17

S_T_A_S_

А ты смотрел макросы Four-F для SEH(в KmdKit), можно ли такие же реализовать на fasm? Нужная веСЧь, imho ;-)

ЗЫ: проблемы при компиляции с align у меня возникли когда я забыл написать end virtual :-)


Дата: Июл 15, 2004 14:12:21

Asterix

Да, вроде работает :)
См. тут


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