|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 22, 2004 14:50:56 S_T_A_S_ > Хотя для знатоков PERL нет сложностей перелопатить стандартные инклуды ;-) Ну до знатока мне далеко, но например инклуды для fasm'а я сделал перегнав masm'овские скриптом на Perl :-) Four-F > Очень интересная ветка, но, IMHO, граничит с извратом. Я заметил только один изврат или неудобство, нельзя переносить строку вызова функции, т.е. нельзя применять символ \ |
|
|
Дата: Июл 23, 2004 01:10:33 Кстати, S_T_A_S_, а зачем в этой строчке common if _#source eq _invoke source добавлять впереди символ подчеркивания _, разве так common if source eq invoke source не прокатит ?? |
|
|
Дата: Июл 23, 2004 09:49:13 Поскольку "invoke equ ", то второе условие будет всегда истинно. В первом случае же к invoke "прикрепляется" символ, а "_invoke" - это уже не пустое место, а "_invoke". |
|
|
Дата: Июл 23, 2004 22:40:34 S_T_A_S_ > Поскольку "invoke equ " Что-то я опять не понял, почему invoke equ ? Ведь приведенные выше мной строчки для макроса mov но не для макроса invoke. |
|
|
Дата: Июл 23, 2004 23:15:12 Но "invoke equ " всё равно должно быть объявлено так. Макрос MOV проверяет, является ли его аргуменотом invoke, и если да, то выполняет invoke. |
|
|
Дата: Июл 24, 2004 00:15:04 > Но "invoke equ " всё равно должно быть объявлено так. Почему? > Макрос MOV проверяет, является ли его аргуменотом invoke, и если да, то выполняет invoke. Это понятно, с логикой я уже разобрался, но остались нюансы ;-) |
|
|
Дата: Июл 24, 2004 00:53:17 Если invoke не делать "EQU ", то после препроцессинга получим: common if _invoke source eq _invoke invoke source что не есть хорошо. Смысл такой: отдельный invoke препроцессором преобразовывается в "" (т.к. есть "invoke equ "), а при добывлении символа "_" путём "_#invoke" получится "_invoke", как и в правой части условия. Таким образом определяется, что "source" содержит в начале "invoke". В FASM нет специальных директив, как в MASM, получается, что мы как бы программируем препроцессор :) Поэтому и то, что в MASM делается одной командой, в FASM иногда приходится делать несколькими, но гибкость выше. |
|
|
Дата: Июл 24, 2004 02:08:45 S_T_A_S_ Точно! Туплю, ты ведь мне уже подобное объяснял :-) Видел новый макрос Privalova - invoke ?? Ну и наворотил он там, но это практически то что мне было нужно, я бы ещё предпочел вызов функции заключать в скобочки () Думаю ещё заюзаю расширенный mov, как у тебя в этом топике, и мне пока хватит ;-) |
|
|
Дата: Июл 24, 2004 03:23:43 Да, марос хороший. Самое главное, я теперь знаю, как обеспечить рекурсивность макросов, не задавая их по 5 раз :-) Хотя в новой версии моих макросов рекурсия уже не требуется. Только компилируется что-то не слишком бысторо =) |
|
|
Дата: Авг 22, 2004 19:27:37 Four-F, странно, но если функция(и) cdecl то masm ругается на вложенные invoke, т.е. $invoke. |
|
|
Дата: Авг 22, 2004 20:33:03 Надо будет репу почесать. |
|
|
Дата: Авг 23, 2004 02:55:23 Four-F, зря я бил тревогу, это в портированном inc'е OllyDbg для masm была ошибка в прототипах. .IF $invoke(Findthread, $invoke(Plugingetvalue, VAL_MAINTHREADID)) != NULL Findthread была объявлена как stdcall, но на самом деле она cdecl, также как и Plugingetvalue. После исправления всё нормально скомпилилось. |
|
|
Дата: Авг 23, 2004 12:13:34 Asterix, спасибо, что избавил от вычёсывания остатков :) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.123 |