подскажите как заставить масм не делать коротких переходов

Тема в разделе "WASM.ASSEMBLER", создана пользователем doctor_Ice, 30 ноя 2007.

  1. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    OPTION NOLJMP неработет =(
     
  2. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Ну, можно вручную указывать, где надо, размер перехода...
     
  3. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    надо везде. а как боротся со всеми этими ифами?
     
  4. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    doctor_Ice

    Кстати, а Вы уверены, что OPTION NOLJMP? Может, OPTION LJMP? (у меня описания под рукой нет, а сам не помню -- использовать не приходилось)
     
  5. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    Syntax: OPTION LJMP

    OPTION NOLJMP

    Description:

    The LJMP option enables automatic conditional-jump lengthening.
    LJMP is the default.

    Enabling LJMP allows the assembler to generate code that emulates
    a conditional jump of greater than -128 to +127 bytes. If the jump
    is within this range, no special code is generated. It does not
    affect unconditional jumps or the control-flow directives.


    The assembler will generate an A6003 warning for a lengthened jump
    so that you can identify it for later optimization.
     
  6. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    doctor_Ice

    Хм... тогда, похоже, у него нет параметра для принудительного включения той или иной длины перехода...
     
  7. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    смотря для чего надоть, у мну щас нет возможности да и времени протестить, но в качестве альтернативы можно заюзать макро и не парить моск
    Код (Text):
    1. .386
    2. .model flat, stdcall
    3. option casemap:none
    4.  
    5. ;long jmp workaround
    6. ljmp macro offset
    7.     db 0e9h
    8.     dd offset - @f 
    9. @@:
    10. endm
    11.  
    12.  
    13.  
    14. .code
    15.  
    16. start:
    17.    
    18.     ljmp @end
    19.  
    20.     ;never here
    21.     db 0cch    
    22.  
    23. @end:  
    24.     ret
    25.  
    26. end start
     
  8. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    не катит к сожалению.... в коде куча ифов и они насоздают кучу коротких переходов всеравно.