l_inc Все переменные в NT имеют размер 4 байта. Этого требует архитектура, в частности ядро требует выравнивание стека на границу 4-х байт. Посему размер указывать вобще нет смысла. А вот типы просто неоходимы. После написания стопяцот фунок я не вспомню что там за параметры. В масме есть хидеры с обьявлением базовых типов и констант, базовый это нэйтив. Если этого нет, то фтопку такую среду. Я не собираюсь описывать тысячи констант и типов, перед тем как чтото закодить.
Clerk FASM (как и любой другой адекватный ассемблер) не для NT, а для x86. Это раз. Указывать DWORD не обязательно. По умолчанию параметры будут DWORD. Это два. У адекватных программистов параметры передаются не всегда только в системные функции, но и в свои тоже. Соответственно своя функция может принимать в общем случае параметры размером и в два байта и в шесть и в восемь. Это три. Хотите быстро знать тип переменной, учите венгерскую нотацию и пользуйтесь на здоровье. Всяко лучше дурацких типов вида PSYSTEM_HANDLE_INFORMATION в полстроки IDE. В них есть смысл только в высокоуровневых языках. Это четыре.
l_inc Мы пишем не в реалмоде, а в определённой ОС. Тут лишний байт в стеке приведёт к ошибке с большой вероятностью. ps: это было самое глупое ваше заявление за всё время тут. (сложилось впечатление что фасм это своеобразный хекс-редактор со скриптовым языком..)
Clerk 1) В масме может Вы и пишете в определённой ОС. А FASM позволяет компилировать много чего, включая загрузочный сектор в чистом виде. 2) По умолчанию никаких "лишних байтов" не будет. К тому же с каких пор не надо думать? Знаешь, что делаешь — молодец, не знаешь — твои проблемы. Так что никаких "с большой вероятностью" нет: нужно знать, что делаешь. 3) Я, надеюсь, Вы понимаете, насколько несостоятелен приведенный аргумент против FASM насчёт типизации аргументов процедур. Тип аргумента — не более чем комментарий к нему. Никакой функциональной нагрузки он не несёт. Поэтому: — в FASM можно просто игнорировать типы при описнаии прототипа функции. А сами типы аргументов писать в комментариях. Будет абсолютно ни чем не хуже, чем в MASM. — в FASM можно одноразово перегрузить макрос proc, чтобы он игнорировал все нестандартные типы аргументов, приводя их к DWORD. После чего можете писать, что хотите, не описывая "тысячи констант и типов". Что же насчёт констант, то они есть в заголовочных файлах FASM. Даже если они там и не все, то ничто не мешает масмовые инклуды преобразовать в описания для FASM.
Если уж кому нибудь захочется иметь сто имён DWORD-а, то он может использовать инклюды от хатчевского масма, equ он и в африке equ. Даже если и придётся что-то подправить, то это же делается одни раз! Думаю, что клерку перейти на фасм не позволяет скорее религия.
Пример: Код (Text): IsCurrentProcess proc Process:HANDLE Local ProcessInformation:PROCESS_BASIC_INFORMATION invoke ZwQueryInformationProcess, Process, ProcessBasicInformation, addr ProcessInformation, sizeof(PROCESS_BASIC_INFORMATION), NULL test eax,eax mov ecx,fs:[TEB.Cid.UniqueProcess] jnz Exit cmp ProcessInformation.UniqueProcessId,ecx ... Как это будет выглядеть на фасме ?
Код (Text): HANDLE equ DWORD (специально для любителей этого дела, разумеется, будем считать, что объявлено не здесь, а где-то) proc IsCurrentProcess Process:HANDLE local ProcessInformation PROCESS_BASIC_INFORMATION invoke ZwQueryInformationProcess,[Process],ProcessBasicInformation,ProcessInformation, sizeof.PROCESS_BASIC_INFORMATION, NULL test eax,eax mov ecx,[fs:TEB.Cid.UniqueProcess] jnz Exit cmp [ProcessInformation.UniqueProcessId],ecx Только не уверен насчёт параметров ZwQueryInformationProcess, нет док под рукой.
Z3N А константы и структуры из воздуха взялись ? Если обьявлено "гдето там", то обьявите, сделайте приличные юзабельные хидеры и вобще среду, мб я откажусь от масма и буду в ней кодеть.
Clerk, наверно, думает, что без масма я из дому не выхожу . Переделать эти ваши структуры дело тривиальное, но дело в том, что надо же с чего-то сдирать. Исключение для меня составляют структуры с инион, я с ними не дружу .
Z3N У меня приведённый выше код будет собран без каких либо лишних определений. Вы его собрать не сможите, так как нужно обьявлять структуры. Дело не только в самом компиляторе, фасм голый, на нём под NT никто не кодит(не вижу примеров, разве что какието простейшие приложения в несколько десятков строк). Разумеется какието задачи проще на нём решать, но это слишком специализированные задачи, такие что большинству и нафиг не нужно.
Решение это проблемы простое - один раз переделать все хидеры и дальше можно кодить без проблем. Тем более, что масмовские инклюды радстенны по синтаксису фасму. В фасме много чего, просто нет фасмвского хутча. Сам масм голее некуда - это просто ассемблер и линкер. И для него нет никаких хидеров.
Z3N Еслибы это не факт. Еслибы был ИИ, нечего было бы компилить.. Повторяю, пишите хидеры, пока мы не видим их.
Clerk, на форуме фасмы валяется konwfasm.pl, который преобразует любой хэдер из .h. Хочешь – натрави на всю include/ и радуйся жизни.
Для тех, кто не понял - клерк хочет, чтобы именно я сделал для него эти хидеры!!! Желание у него хорошее, только он не учёл, что мне плевать на это желание. Это нездоровая тенденция какая-то! То клерк хочет, чтобы я выучил все термины касающееся вирусологии, то чтобы я за него всю работу сделал. Дорогой клерк, большинство людей здорово отличаются от тебя (в лучшую сторону) и им не надо тешить своё эго. Как ты уже догадался тебе не видать этих хедеров от меня... у меня сейчас полно забот. И пункт про клерка не стоит даже в конце списка - его там просто нет! С уважением и лучшим пожеланиями Z3N
Z3N Мне не нужны твои хидеры вместе с этим компилем. Я имел ввиду что когда будет приличная среда, то можно её поюзать вот и всё. Вы далеки от этого. Ухожу из этой темы, себя читать..
Извини, неправильно понял. Прости, это всё что я могу сделать - у меня нет редактирования... И это здорово! Значит к социума я ближе.... Ухожу из темы читать клерку