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

 WASM Phorum —› WASM.WIN32 —› Проблема с fs:[0]

. 1 . 2 . >>

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


Дата: Ноя 14, 2003 07:13:13 · Поправил: SolidCode

В МАСМ32 я не могу использовать эту ссылку (fs:[0]). Варианты типа push fs:[0], mov eax,fs:[0] не прокатывают. Масм говорит:
error A2108: use of register assumed to ERROR

Что делать? Установка .586p не помогает. Во всяких статьях я не нашёл упоминания о магическом действии для этого.
Подскажите сами или предложите, что почитать.


Дата: Ноя 14, 2003 09:47:25

перед использованием регистра fs должна быть
директива
assume fs:nothing


Дата: Ноя 14, 2003 09:52:07
Правка

SolidCode
Ха, тактебе легче!
Поставь перед вызовом assume fs:nothing.

А вот у меня такое не прокатывает: работает только с обычными регистрами, на эту директиву при работе с сегментными компилятор не обращает внимания!

И не пойму, в чём дело, раньше использовал SEH, а сегодня попробовал — ругается!

Как быть?


Дата: Ноя 14, 2003 10:33:44

Я когда-то на это напоролся, пытаясь переделать

CreateSehFrame MACRO SEHProcAddr,ContinueAddr:REQ
assume fs:nothing
push fs:[0]
...........


Дата: Ноя 14, 2003 10:48:46
Правка

Valery
И что???

Ну, и я напоролся, а что делать-то? Ведь пришлось вызывать SetUnhandledFilter, а хотелось бы самому с SEH разобраться (а то теории наслышан, но сам не применял, проги на авось прут :)).

Кто ещё?


Дата: Ноя 14, 2003 11:32:19
Правка

Ёлки, ведь срочно нужно...

Как быть, почему продолжает ругаться?

Пробую
mov eax,fs
mov dx,fs
mov eax,fs[0]
mov ax,fs[0]


Первые два работают, вторые два — никак, не обращая внимания на assume!
Как здесь быть?


Дата: Ноя 14, 2003 11:44:43

IceStudent
	push	edx
	xor	ebx, ebx
	push	dword [fs:ebx]
	mov	[fs:ebx], esp


Это код для FASM - и все работает. Может, в твоем случае, не fs[0], а fs:0 ?


Дата: Ноя 14, 2003 11:51:51
Правка

FASM...
В том-то и дело, что я masm32 использую!
А насчёт fs[0] я уверен, так как слово-в-слово сверял и со статьями, и с примерами Win32 Exception Handling...

И ведь работало раньше, я точно помню, так как поначалу разбирался с SEH! И чёрт меня дёрнул снести те черновики за ненадобностью!!! А так, видно, что-то упустил из виду...

Пробовал
xor exx,exx
push dword ptr fs[exx]
, где вместо exx — все доступные общие регистры, но не получается, одна и та же ошибка! invalid instruction...


Дата: Ноя 14, 2003 12:08:16

Попробуй, что ли, качнуть отсюда целиком туториал какой, где SEH юзаются (может, model или еще что ты забыл правильно указать - это же MASM, куча настроек нужна).


Дата: Ноя 14, 2003 12:16:37
Правка

это же MASM, куча настроек нужна
Так вот это я понял, но я же говорю, что брал примеры с Win32 Exception Handling..., в PE Tutorial #2 хороший пример со структурой SEH, его я и решил взять, но не хочет с этим регистром компилироваться!
И по форуму поискал, везде SEH используется просто — проще некуда!
Самое простое:
push fs[0]
mov fs[0],esp
...
pop fs[0]
, но не работает!
Ч..., видимо, нужна какая-то ещё директива?
Ищу...


Дата: Ноя 14, 2003 12:32:14
Правка

Упс! Не могу найти на сайте PE Tutorial's! Я в offline смотрел дома, а сейчас не могу найти.

Вот,нашёл:
   assume fs:nothing
   push    fs:[0]


И никаких директив, даже .386...
И пример работает.

Да, а почему не работает директива
assume fs:error?
С обычными регистрами работает, а с сегментными не хочет.
А в masm32.hlp про это не сказано.


Дата: Ноя 14, 2003 12:39:19

IceStudent
Щас я у себя масм проинсталю (а то знатоков масма пока не видно), и компильну...


Дата: Ноя 14, 2003 12:48:22

IceStudent
.386
.model flat, stdcall
.code
start:
	assume fs:nothing
	mov eax, dword ptr [fs:18]
	xor	eax, eax
	ret
end start


Это дело компилиться нормально (ML version 6.14.8444)


Дата: Ноя 14, 2003 12:50:06
Правка

а то знатоков масма пока не видно
Это точно!
Но с первой проблемой я разобрался:
голова — продолжение шеи,
надо писать не fs[0], a fs:[0]!

Но почему не могу запретить использование сегментных регистров? В смысле, assume fs:error


Дата: Ноя 14, 2003 13:02:43

IceStudent
сайт совсем дохлый стал :(
ну как, получилось?

. 1 . 2 . >>


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