надо ли, кому либо из здесь присутствующих макросы для фасме?

Тема в разделе "WASM.ZEN", создана пользователем dead_body, 22 фев 2006.

  1. Privalov

    Privalov New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2004
    Сообщения:
    16
    Значить, у вас нет H0.
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Код (Text):
    1. struct W
    2. ;local Counter
    3.     rept 64d Counter { w#Counter    rd  1 }
    4. ends
    5. struct hash_var
    6. ;local Counter
    7.     rept    8d Counter1 {_h#Counter1    rd  1 }
    8. ;   _h1 rd  1
    9. ;   _h2 rd  1
    10. ;   _h3 rd  1
    11. ;   _h4 rd  1
    12. ;   _h5 rd  1
    13. ;   _h6 rd  1
    14. ;   _h7 rd  1
    15. ;   _h8 rd  1
    16. ends


    Privalov

    Блин, фасм рулит! 64 rd и в 3 строки!!! Ахренеть!

    Ладно к вопросу: Как видишь из кода пытаюсь определить локальные переменные для 2х разных структур но с одинаковым именем Counter!



    Зы:

    думаю и другим будет познавательно
     
  3. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    new version:

    26.03.2006

    Macro version 0.0.3

    + add \n,\0,\r,\f,... - directives.

    + add to lea command $TA0("") directive.

    + correct many errors.

    Documentation version 0.0.2

    + add first chapter.





    ;-------------------------

    Если у кого то есть вопросы по макросам в фасме, то говорите буду пытаться отвечать.

    [​IMG] _589165114__fasm macro.7z
     
  4. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    dead_body

    :)))

    Сел решать как этот код улучшить:
    Код (Text):
    1.     mov eax,[work._a]
    2.     add [Hashes._h1],eax
    3.     mov eax,[work._b]
    4.     add [Hashes._h2],eax
    5.     mov eax,[work._c]
    6.     add [Hashes._h3],eax
    7.     mov eax,[work._d]
    8.     add [Hashes._h4],eax
    9.     mov eax,[work._e]
    10.     add [Hashes._h5],eax
    11.     mov eax,[work._f]
    12.     add [Hashes._h6],eax
    13.     mov eax,[work._g]
    14.     add [Hashes._h7],eax
    15.     mov eax,[work._h]
    16.     add [Hashes._h8],eax


    Думаю дай-ка подумаю еще, смотрю ты уже тут как тут! :)))

    Если h`ки можно через rept, а {a,b,c,d,e,f,g,h} через irp то как это можно в совокупности?
     
  5. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    Код (Text):
    1.  
    2. format PE GUI 4.0
    3. include "C:\fasm\INCLUDE\WIN32AX.INC"
    4.  
    5. struct  work_
    6.         a       dd      ?
    7.         b       dd      ?
    8.         c       dd      ?
    9.         d       dd      ?
    10.         e       dd      ?
    11.         f       dd      ?
    12.         g       dd      ?
    13.         h       dd      ?
    14. ends
    15. struct  Hashes_
    16.         a1       dd      ?
    17.         b2       dd      ?
    18.         c3       dd      ?
    19.         d4       dd      ?
    20.         e5       dd      ?
    21.         f6       dd      ?
    22.         g7       dd      ?
    23.         h8       dd      ?
    24. ends
    25.  
    26. .data
    27. work   work_
    28. Hashes Hashes_
    29.  
    30. .code
    31. __EntryPoint:
    32.         mov eax,[work.a]
    33.         add [Hashes.a1],eax
    34.         int 3
    35.         irp value,a,a1,b,b2,c,c3,d,d4,e,e5,f,f6,g,g7,h,h8
    36.         {
    37.            if ~ defined a__
    38.              a__ = 0
    39.            end if
    40.            if a__ = 0
    41.              mov eax,[work.#value]
    42.              a__ = 1
    43.            else
    44.              add [Hashes.#value],eax
    45.              a__ = 0
    46.            end if
    47.         }
    48.         ret
    49. .end __EntryPoint




    но попытаюсь сделать это поменьше. Видно в поисках ответа поплыву на flatassembler.

    Просто толку от rept когда нет цифр? А макросом как я понял тебе не интересно...
     
  6. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    dead_body

    Почему нет? было бы не плохо! Но пока изучаю простые средства! Если максрос получился бы наглядным, то почему я от него должен отказываться?
     
  7. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
  8. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Кто-нибудь пробовал прикручивать windows.inc из масма в фасм, а то в приложенных equates достаточно мало констант и структур.
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    mix_mix

    А в чём проблема-то? Структуры масмовские фасм понимает, "equ" лучше заменить на "=", но не обязательно, а typedefs отпарсить.
     
  10. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Просто у меня фасм как-то брезгует union'ами и вложенными структурами, а потом, когда я все эти юнионы убрал стал матерится на структуры типа:

    POINT STRUC

    x DWORD ?

    y DWORD ?

    POINT ENDS

    Понимал только такого вида:

    struct POINT

    x dd ?

    y dd ?

    ends

    Может я не все инклуды подключил (подключаю только win32a.inc, но там в нем самом уже все подключено из папки MACRO)