Вопрос по синтаксису FASM

Тема в разделе "WASM.ASSEMBLER", создана пользователем EugeneFomenko, 11 июл 2008.

  1. EugeneFomenko

    EugeneFomenko New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2008
    Сообщения:
    3
    как записать на FASM следующую конструкцию на MASM:

    assume esi: ptr IMAGE_DOS_HEADER
    add esi, [esi].e_lfanew

    ?
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    тема не раз поднималась, юзайте поеск перед тем как чтото запостеть
    Код (Text):
    1. virtual at esi
    2. dos_header IMAGE_DOS_HEADER
    3. end virtual
    4. add esi,[dos_header.e_lfanew]
     
  3. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    Код (Text):
    1. add esi, [esi + IMAGE_DOS_HEADER.e_lfanew]
     
  4. zet

    zet New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2007
    Сообщения:
    121
    EDIT
    Не успел (
     
  5. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Фримэн ответил точнее, хотя мне такой вариант не очень нравится. Предпочитаю использовать последний вариант, но для его работы директиву virtual я использую по-другому:
    Код (Text):
    1. virtual at 0
    2. IMAGE_DOS_HEADER IMAGE_DOS_HEADER
    3. end virtual
    4. ...
    5. add eax,[esi+IMAGE_DOS_HEADER.e_lfanew]
     
  6. n1kt0

    n1kt0 Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    160
    я что-то пробовал ваот таким вот образом вытянуть значение
    Код (Text):
    1. virtual at 0
    2. IMAGE_DOS_HEADER IMAGE_DOS_HEADER
    3. end virtual
    4. add eax,[esi+IMAGE_DOS_HEADER.e_lfanew]
    на строке MAGE_DOS_HEADER IMAGE_DOS_HEADER выскакивает illegal instruction
    какие тут есть тонкости ?
     
  7. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    n1kt0
    Если есть структура, как
    struct IMAGE_DOS_HEADER
    .....
    ends

    то писать надо
    add eax,[esi+IMAGE_DOS_HEADER.e_lfanew]

    а с vitrual попробуй так:
    virtual at esi
    IMAGE_DOS_HEADER <>
    end virtual
     
  8. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    n1kt0, значит, ты не объявил структуру IMAGE_DOS_HEADER!
    Код (Text):
    1. struc IMAGE_DOS_HEADER { ... }
    2.  
    3. virtual at 0
    4. IMAGE_DOS_HEADER IMAGE_DOS_HEADER
    5. end virtual
    6. ...
    7. add eax,[esi+IMAGE_DOS_HEADER.e_lfanew]
     
  9. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    В таком случае вот это:
    совсем необязательно.
     
  10. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    В последних версиях может и не обязательно - не пробовал. А вот в более ранних версиях было обязательно.
     
  11. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Sol_Ksacap, Phantom_84, обязательно, если структура сделана через struc и не нужно (не скомпилируется даже), если структура сделана через struct.
     
  12. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Про использование макроса struct никто ничего не говорил. В таком случае не следует забывать про это:
    include "macro/struct.inc"