FASM

Тема в разделе "WASM.BEGINNERS", создана пользователем gas, 25 апр 2010.

  1. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    l_inc
    Все переменные в NT имеют размер 4 байта. Этого требует архитектура, в частности ядро требует выравнивание стека на границу 4-х байт. Посему размер указывать вобще нет смысла. А вот типы просто неоходимы. После написания стопяцот фунок я не вспомню что там за параметры. В масме есть хидеры с обьявлением базовых типов и констант, базовый это нэйтив. Если этого нет, то фтопку такую среду. Я не собираюсь описывать тысячи констант и типов, перед тем как чтото закодить.
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Clerk
    FASM (как и любой другой адекватный ассемблер) не для NT, а для x86. Это раз.
    Указывать DWORD не обязательно. По умолчанию параметры будут DWORD. Это два.
    У адекватных программистов параметры передаются не всегда только в системные функции, но и в свои тоже. Соответственно своя функция может принимать в общем случае параметры размером и в два байта и в шесть и в восемь. Это три.
    Хотите быстро знать тип переменной, учите венгерскую нотацию и пользуйтесь на здоровье. Всяко лучше дурацких типов вида PSYSTEM_HANDLE_INFORMATION в полстроки IDE. В них есть смысл только в высокоуровневых языках. Это четыре.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    l_inc
    Мы пишем не в реалмоде, а в определённой ОС. Тут лишний байт в стеке приведёт к ошибке с большой вероятностью.
    ps: это было самое глупое ваше заявление за всё время тут.
    (сложилось впечатление что фасм это своеобразный хекс-редактор со скриптовым языком..)
     
  4. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Clerk
    1) В масме может Вы и пишете в определённой ОС. А FASM позволяет компилировать много чего, включая загрузочный сектор в чистом виде.
    2)
    По умолчанию никаких "лишних байтов" не будет. К тому же с каких пор не надо думать? Знаешь, что делаешь — молодец, не знаешь — твои проблемы. Так что никаких "с большой вероятностью" нет: нужно знать, что делаешь.
    3) Я, надеюсь, Вы понимаете, насколько несостоятелен приведенный аргумент против FASM насчёт типизации аргументов процедур. Тип аргумента — не более чем комментарий к нему. Никакой функциональной нагрузки он не несёт. Поэтому:
    — в FASM можно просто игнорировать типы при описнаии прототипа функции. А сами типы аргументов писать в комментариях. Будет абсолютно ни чем не хуже, чем в MASM.
    — в FASM можно одноразово перегрузить макрос proc, чтобы он игнорировал все нестандартные типы аргументов, приводя их к DWORD. После чего можете писать, что хотите, не описывая "тысячи констант и типов". Что же насчёт констант, то они есть в заголовочных файлах FASM. Даже если они там и не все, то ничто не мешает масмовые инклуды преобразовать в описания для FASM.
     
  5. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Если уж кому нибудь захочется иметь сто имён DWORD-а, то он может использовать инклюды от хатчевского масма, equ он и в африке equ.
    Даже если и придётся что-то подправить, то это же делается одни раз!
    Думаю, что клерку перейти на фасм не позволяет скорее религия.
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Пример:
    Код (Text):
    1. IsCurrentProcess proc Process:HANDLE
    2. Local ProcessInformation:PROCESS_BASIC_INFORMATION
    3.     invoke ZwQueryInformationProcess, Process, ProcessBasicInformation, addr ProcessInformation, sizeof(PROCESS_BASIC_INFORMATION), NULL
    4.     test eax,eax
    5.     mov ecx,fs:[TEB.Cid.UniqueProcess]
    6.     jnz Exit
    7.     cmp ProcessInformation.UniqueProcessId,ecx
    8.     ...
    Как это будет выглядеть на фасме ?
     
  7. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Код (Text):
    1. HANDLE equ DWORD (специально для любителей этого дела, разумеется, будем считать, что объявлено не здесь, а где-то)
    2. proc IsCurrentProcess Process:HANDLE
    3. local ProcessInformation PROCESS_BASIC_INFORMATION
    4.     invoke ZwQueryInformationProcess,[Process],ProcessBasicInformation,ProcessInformation, sizeof.PROCESS_BASIC_INFORMATION, NULL
    5.     test eax,eax
    6.     mov ecx,[fs:TEB.Cid.UniqueProcess]
    7.     jnz Exit
    8.     cmp [ProcessInformation.UniqueProcessId],ecx
    Только не уверен насчёт параметров ZwQueryInformationProcess, нет док под рукой.
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Z3N
    А константы и структуры из воздуха взялись ?
    Если обьявлено "гдето там", то обьявите, сделайте приличные юзабельные хидеры и вобще среду, мб я откажусь от масма и буду в ней кодеть.
     
  9. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Clerk, наверно, думает, что без масма я из дому не выхожу :). Переделать эти ваши структуры дело тривиальное, но дело в том, что надо же с чего-то сдирать. Исключение для меня составляют структуры с инион, я с ними не дружу :dntknw:.
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Z3N
    У меня приведённый выше код будет собран без каких либо лишних определений. Вы его собрать не сможите, так как нужно обьявлять структуры. Дело не только в самом компиляторе, фасм голый, на нём под NT никто не кодит(не вижу примеров, разве что какието простейшие приложения в несколько десятков строк). Разумеется какието задачи проще на нём решать, но это слишком специализированные задачи, такие что большинству и нафиг не нужно.
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    baldr
    Для вас специально уточняю. Авард биос, который загрузил эту ось писан полностью на масме.
     
  12. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Решение это проблемы простое - один раз переделать все хидеры и дальше можно кодить без проблем. Тем более, что масмовские инклюды радстенны по синтаксису фасму. В фасме много чего, просто нет фасмвского хутча.
    Сам масм голее некуда - это просто ассемблер и линкер. И для него нет никаких хидеров.
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Z3N
    Еслибы это не факт. Еслибы был ИИ, нечего было бы компилить.. Повторяю, пишите хидеры, пока мы не видим их.
     
  14. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Clerk, на форуме фасмы валяется konwfasm.pl, который преобразует любой хэдер из .h. Хочешь – натрави на всю include/ и радуйся жизни.
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    iZzz32
    Не мне это не нужно, я же говорил что у меня с компиляцией всё норм.
     
  16. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Для тех, кто не понял - клерк хочет, чтобы именно я сделал для него эти хидеры!!! Желание у него хорошее, только он не учёл, что мне плевать на это желание.

    Это нездоровая тенденция какая-то! То клерк хочет, чтобы я выучил все термины касающееся вирусологии, то чтобы я за него всю работу сделал.

    Дорогой клерк, большинство людей здорово отличаются от тебя (в лучшую сторону) и им не надо тешить своё эго.

    Как ты уже догадался тебе не видать этих хедеров от меня... у меня сейчас полно забот.
    И пункт про клерка не стоит даже в конце списка - его там просто нет!

    С уважением и лучшим пожеланиями Z3N
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Z3N
    Мне не нужны твои хидеры вместе с этим компилем. Я имел ввиду что когда будет приличная среда, то можно её поюзать вот и всё.
    Вы далеки от этого.
    Ухожу из этой темы, себя читать.. :)
     
  18. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Извини, неправильно понял. Прости, это всё что я могу сделать - у меня нет редактирования...

    И это здорово! Значит к социума я ближе....

    Ухожу из темы читать клерку :)