assume в fasm

Тема в разделе "WASM.ASSEMBLER", создана пользователем 3ton, 9 апр 2005.

  1. 3ton

    3ton New Member

    Публикаций:
    0
    Регистрация:
    28 май 2004
    Сообщения:
    11
    Адрес:
    Ukraine
    А как правильно сделать assume в fasm'e?

    К примеру надо так:
    Код (Text):
    1.  
    2. assume edi:ptr IMAGE_DOS_HEADER
    3. add edi,[edi].e_lfanew
    4.  


    На fasme это будет так?
    Код (Text):
    1.  
    2. virtual at edi
    3.     curlp IMAGE_DOS_HEADER
    4. end virtual
    5. add edi,[curlp.e_lfanew]
    6.  


    Как то громоздко получается. Можно конечно макрос написать :/.

    И как сделать, чтобы можно было все время объявлять метки с одинаковыми именами. Например создать еще одну с именем curlp. А то он ругается, что symbol already defined. Как сделать чтобы он ее забыл :)?
     
  2. LocTb

    LocTb New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    54
    метки с одинаковыми именами

    Мля, ну:
    Код (Text):
    1. mov edi, CHT0_TE_NADO


    А если в разных процедурах, то ставь "." перед именем.
     
  3. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Что мешает макрос использовать? будет одной строчкой. Например такой:
    Код (Text):
    1. macro   assign  reg, struct
    2. {
    3.     virtual at reg
    4.         .#reg struct
    5.     end virtual
    6. }
    7.  
    8. ;
    9.  
    10. assign  edi, IMAGE_DOS_HEADER
    11. add     edi, [.edi.e_lfanew]




    PS: when u assume, you add an ass to u & me :)))
     
  4. 3ton

    3ton New Member

    Публикаций:
    0
    Регистрация:
    28 май 2004
    Сообщения:
    11
    Адрес:
    Ukraine
    Ага, пасиба. Разобрался
     
  5. Avoidik

    Avoidik New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2004
    Сообщения:
    288
    Адрес:
    Russia
    нафига этот assume, imho лучше юзать конструкцию вроде такой:


    Код (Text):
    1.  
    2. mov edi,[lParam]
    3. mov eax,[edi+PAINTSTRUCT.hDc]
    4.  
     
  6. Privalov

    Privalov New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2004
    Сообщения:
    16
    macro assign reg, struct

    {

    virtual at reg

    local ..foo

    reg equ ..foo

    reg struct

    restore reg

    end virtual

    }



    ;



    assign edi, IMAGE_DOS_HEADER

    add edi, [edi.e_lfanew]



    ;)
     
  7. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433


    :)) это откудава?
     
  8. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    если не ошибаюсь, то с форума flat assembler :)))