синтсксис fasm

Тема в разделе "WASM.BEGINNERS", создана пользователем assorted, 18 янв 2007.

  1. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    Немогу уразуметь почему fasm ругается на

    mov eax, [esp+0C0h+var_8C]

    value out of range
     
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    проверь разрядность переменной var_8C

    у меня собирается

    Код (Text):
    1. use32
    2. start:
    3.  
    4. mov     eax, [esp+0C0h+var_8C]
    5. ret
    6.  
    7. var_8C dd 0
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Подозреваю, что var_8C взят из IDA в виде var_8C equ ptr XXX.
    Меняй на var_8C = XXX

    Горе-кракеры..
     
  4. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    Ясно дело ptr убрал...

    var_8C = dword -8Ch
    mov eax, [esp+0C0h+var_8C]

    как и говорил - value out of range

    Причем так mov eax, [esp+0C0h-8Ch] - собирается
     
  5. el-

    el- New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    89
    var_8C = -8Ch

    а потом ...

    mov eax, [esp+0C0h+var_8C]

    и все ...
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Это если число не умещается в приёмник. -0х08С = 0хFFFFFF74. 0х0С0 + 0хFFFFFF74 = 0х34, но происходит переволнение. Не пиши dword, тогда var_8C будет занимать 64бита (размер констант по умолчанию) и скомпилируется.
     
  7. ProgramMan

    ProgramMan New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2004
    Сообщения:
    263
    Потому что -8Ch не Dword
    Читай доку интела ;)
    убири из var_8C = dword -8Ch
    dword и всё будет ок
     
  8. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    ProgramMan Спасибо! Всему виной IDA - настаила dword где не надо...
     
  9. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    в принципе, если разрядность переменной другая, ее можно перекрыть:
    mov eax, dword [esp+0C0h+var_8C]
    ----------
    видимо, не из той оперы (спешка :)
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Нда.. Вообще-то, она использует синтаксис тасм. И "компилябельность" листинга никогда не было целью этой софтины.