MASM ver. 8.0 не компилирует, syntax err

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

  1. ALLeX

    ALLeX Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    141
    Адрес:
    Ukraine
    Странно, но похоже ниже следующая, безобидная конструкция объявлена вне закона начиная с версии 8. Попытка использовать UnIniDataSize вызывает ошибку.

    Код (Text):
    1. .data?
    2. hInstance HINSTANCE ?
    3. hLabel1 HANDLE ?
    4. hLabel2 HANDLE ?
    5. hLabel3 HANDLE ?
    6. hLabel4 HANDLE ?
    7. UnIniDataSize equ $ - hInstance
    8. .code
    9. invoke  RtlZeroMemory, ADDR hInstance, UnIniDataSize ; - syntax error!
    10. invoke  RtlZeroMemory, ADDR hInstance, 40 ; - all Ok!
    Как теперь размер то считать? Или это баг?
     
  2. dcskm4200

    dcskm4200 New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2004
    Сообщения:
    173
    Адрес:
    China
    UnIniDataSize equ ($ - offset hInstance)
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    dcskm4200
    Не помогает. И проблема только с операндами invoke. И только в 8.0 :)
     
  4. yuzvir

    yuzvir New Member

    Публикаций:
    0
    Регистрация:
    20 май 2005
    Сообщения:
    97
    может так?
    invoke RtlZeroMemory, ADDR hInstance, offset UnIniDataSize
    или так?
    UnIniDataSize equ $ - offset hInstance
     
  5. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    ALLeX
    Microsoft (R) Macro Assembler Version 8.00.40426.16 - полет нормальный.

    yuzvir
    offset UnIniDataSize
    Сам понял? что написал?
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    q_q
    8.00.50727.42 - воспроизводится.
     
  7. yuzvir

    yuzvir New Member

    Публикаций:
    0
    Регистрация:
    20 май 2005
    Сообщения:
    97
    я то понимаю что это бред, но мой масм такое компилирует нормально, почему бы и не попробывать?
     
  8. IceStudent

    IceStudent Active Member

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

    yuzvir New Member

    Публикаций:
    0
    Регистрация:
    20 май 2005
    Сообщения:
    97
    IceStudent
    Код (Text):
    1. ;@goto end
    2.  
    3. .486
    4. .model flat,stdcall
    5. option casemap:none
    6.  
    7.     include     windows.inc
    8.     include     kernel32.inc
    9.     includelib  kernel32.lib
    10.  
    11. .data?
    12.     hInstance   HINSTANCE ?
    13.     hLabel1     HANDLE ?
    14.     hLabel2     HANDLE ?
    15.     hLabel3     HANDLE ?
    16.     hLabel4     HANDLE ?
    17.     UnIniDataSize equ $ - hInstance
    18.  
    19. .code
    20. Start:
    21.     invoke  RtlZeroMemory, ADDR hInstance, offset UnIniDataSize
    22.  
    23.     invoke  RtlZeroMemory, ADDR hInstance, 40
    24.     invoke  ExitProcess,0
    25.  
    26. end Start
    27.  
    28. ;:end
    29. ;@echo off
    30. ;set cmpl=\masm32
    31. ;set proj=%~n0
    32. ;%cmpl%\bin\ml /c /coff /Cp /I%cmpl%\include\ %proj%.bat
    33. ;%cmpl%\bin\link /SUBSYSTEM:WINDOWS /LIBPATH:%cmpl%\lib %proj%.obj
    34. ;del *.obj
    Assembling: test.bat
    Microsoft (R) Macro Assembler Version 8.00.40301.09
    Copyright (C) Microsoft Corporation. All rights reserved.

    Microsoft (R) Incremental Linker Version 7.00.9466
    Copyright (C) Microsoft Corporation. All rights reserved.

    >Exit code: 0 Time: 0.534

    ради интереса еще проверил на 6.14.8444, 6.15.8803, 7.10.3077, тоже никаких проблем

    может тут еще от файлика windows.inc зависит?
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Да, я выше писал, что только в 8.0. И получается, что в проблема с 50727, а в младших версиях этого нет.


    И ещё интересно, откуда номер билда (?) 50727, ведь до этого был 3077. Правда, в 7.0 был 9466 (!). По какому алгоритму (?) они вписывают?
     
  11. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Действительно, ассемблирует корректно, хоть и бред :))