Странно, но похоже ниже следующая, безобидная конструкция объявлена вне закона начиная с версии 8. Попытка использовать UnIniDataSize вызывает ошибку. Код (Text): .data? hInstance HINSTANCE ? hLabel1 HANDLE ? hLabel2 HANDLE ? hLabel3 HANDLE ? hLabel4 HANDLE ? UnIniDataSize equ $ - hInstance .code invoke RtlZeroMemory, ADDR hInstance, UnIniDataSize ; - syntax error! invoke RtlZeroMemory, ADDR hInstance, 40 ; - all Ok! Как теперь размер то считать? Или это баг?
может так? invoke RtlZeroMemory, ADDR hInstance, offset UnIniDataSize или так? UnIniDataSize equ $ - offset hInstance
ALLeX Microsoft (R) Macro Assembler Version 8.00.40426.16 - полет нормальный. yuzvir offset UnIniDataSize Сам понял? что написал?
IceStudent Код (Text): ;@goto end .486 .model flat,stdcall option casemap:none include windows.inc include kernel32.inc includelib kernel32.lib .data? hInstance HINSTANCE ? hLabel1 HANDLE ? hLabel2 HANDLE ? hLabel3 HANDLE ? hLabel4 HANDLE ? UnIniDataSize equ $ - hInstance .code Start: invoke RtlZeroMemory, ADDR hInstance, offset UnIniDataSize invoke RtlZeroMemory, ADDR hInstance, 40 invoke ExitProcess,0 end Start ;:end ;@echo off ;set cmpl=\masm32 ;set proj=%~n0 ;%cmpl%\bin\ml /c /coff /Cp /I%cmpl%\include\ %proj%.bat ;%cmpl%\bin\link /SUBSYSTEM:WINDOWS /LIBPATH:%cmpl%\lib %proj%.obj ;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 зависит?
Да, я выше писал, что только в 8.0. И получается, что в проблема с 50727, а в младших версиях этого нет. И ещё интересно, откуда номер билда (?) 50727, ведь до этого был 3077. Правда, в 7.0 был 9466 (!). По какому алгоритму (?) они вписывают?