|
|
| Посл.отвђт | Сообщен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 сайт совсем дохлый стал :( ну как, получилось? |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.141 |