Баг в масме

Тема в разделе "WASM.ASSEMBLER", создана пользователем hello_world, 5 май 2005.

  1. hello_world

    hello_world New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2003
    Сообщения:
    55
    Адрес:
    москва
    Похоже, масм неправильно считает размер джампов вперед.

    Например вот такой код:
    Код (Text):
    1.  
    2. label1:
    3.  
    4. jmp label2
    5.  
    6. label2:
    7.  
    8. codesize equ $ - offset label1
    9.  
    10. %echo @CatStr(%codesize) ; вместо 2 выдает 10
    11.  


    С коллами и условными джампами тоже самое - размер неправильный.

    Хотя, если делать джамп назад, то все ок.

    Например:
    Код (Text):
    1.  
    2. label1:
    3.  
    4. jmp label1
    5.  
    6. codesize equ $ - offset label1
    7.  
    8. %echo @CatStr(%codesize) ; выдает 2
    9.  




    У меня стоит масм 6.14.8444

    Может версия не та?
     
  2. IceStudent

    IceStudent Active Member

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



    За подробностями — поиск по форуму.
     
  3. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    IMHO для таких целей лучше fasm использовать. Он и скомпилирует во что угодно, хоть в jpeg, да и с вычислением размера джампов проблем не имеет.