фасм: mov eax,[eax+0] вместо mov eax,[eax]

Тема в разделе "WASM.BEGINNERS", создана пользователем GoldFinch, 23 окт 2008.

  1. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    как заставить фасм генерить mov eax,[eax+0] (8B 40 00) вместо mov eax,[eax] (8B 00)?
     
  2. zhindos

    zhindos New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    142
    1) Зачем?
    2) db 0x8B, 0x40, 0x00 ; не покатит?

    Sorry, если не так понял...
     
  3. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    вроде было что то такое или похожее на форуме фасма, но что то не могу найти сейчас. Видимо нужно или спросить на форуме фасма или написать макрос.
     
  4. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Я этого добился подпиливанием исходников FASM'а.
     
  5. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Mika0x65 о_О Присоденяюсь к вопросу. Зачем?
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Aspire
    Самомодифицирующийся код.
     
  7. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    mov eax,[eax+7Fh]
    store 0 to $-1
     
  8. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Для длинного смещения:

    mov eax,[eax+7FFFFFFFh]
    store dword 0 to $-4
     
  9. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    Phantom_84
    Ну это все равно не то =) Тут задачка чтобы заставить фасм при таком же написании генерить другой вариант инструкции.
     
  10. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    угу. видимо синтаксис этого не позволяет. значит макросы...
     
  11. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Для длинного смещения можно написать

    mov eax,[dword eax+0]

    а вот для байтового такое не проходит.
     
  12. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    GoldFinch
    С макросами замучаться можно. Для версии 1.6.27 надо закомментировать строки 6519 и 6520:
    ; or edx,edx
    ; jz simple_address
    в файле x86_64.inc. Это для MODRM адресации. Для SIB надо закомментировать строки 6439 и 6440 того же файла и добавить безусловный переход:
    ; cmp bh,5
    ; je address_value
    jmp address_value

    После перекомпиляции FASM всегда генерирует [reg + d8] адресацию вместо [reg].