История MASM

Тема в разделе "WASM.ARTICLES", создана пользователем Mikl___, 28 дек 2023.

  1. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.780

    MASM 7.0 в Visual C++ .NET 2002 7.0 (any*) & XP 5.1.2600 DDK


    НазваниеРазмер
    (байт)
    md5Дата
    ml.exe413696b2165bcdd8754d2827ba850f4fbfb93f1/5/2002 3:36ambuild 7.00.9466 / VS.NET 2002 7.0 (any*)
    ml.exe409600609d5355a9a67a4bd66d38b6d459015d10/26/2000 2:39ambuild 6.15.9030 в комплекте с VS.NET 7 BETA 1
    ml.exe4136967309504fa896698390f754fb34c3ddea6/7/2001 3:14ambuild 7.00.9254 в комплекте с VS.NET 7 BETA 2
    ml.exe41369678aac4b5784393fbb4a4b51d1a02d2317/21/2001 7:31pmbuild 7.00.9210 / XP 5.1.2600 DDK
    *Версия MASM, поставляемая с Visual C++ .NET 2002 7.0, не изменяется после установки пакета обновления 1.
    Эта версия поставляется с новым Visual C++ .NET 2002 7.0 и Windows XP 5.1.2600 DDK (находится по адресу WINDDK\2600\bin\x86\ml.exe). Другой выпуск XP DDK (5.1.2600.1106) включал в себя тот же файл ml.exe, что и первый DDK, но был датирован 25 марта 2002, 19:22. Помимо косметических различий, существенных изменений, похоже, не произошло. @Version по-прежнему сообщает о предыдущей версии MASM (серия 6.x). Примечательно, что в отличие от 7.1 и всех других более поздних версий MASM, номера сборок которых совпадали с поставляемым набором инструментов Visual Studio, Visual Studio .NET 7.0 BETA 1 выпустила уникальный MASM, который не только сообщал 615 для @Version, но также сообщал 6.15 в командной строке! Вероятно, на данный момент Microsoft еще не завершила внесение изменений в среду сборки, необходимых для полной интеграции ее с набором инструментов Visual Studio.
    СПИСОК ИЗМЕНЕНИЙ:
    • Год(ы) авторских прав в командной строке:
      Начиная с версии 7 и далее, Microsoft перестала отображать годы авторских прав, которые раньше отображались в командной строке.
    • Зависимость ML.ERR удалена:
      Сопутствующий файл ML.ERR, необходимый для запуска MASM, присутствовал почти во всей строке 6.x (кроме версии 6.1a), но, начиная с версии 7 и в дальнейшем, строки сообщения об ошибке отображают строки ml.exe, считанные из этого файла. были перенесены в сам ml.exe. Кроме того, новые встроенные строки сообщений об ошибках теперь имеют формат UNICODE для целей локализации.
      ПРИМЕЧАНИЕ. Версия ml.exe, выпущенная вместе с XP 5.1.2600 DDK, содержала файл ml.err, который был идентичен файлу ml.err, выпущенному с версией 6.15 (правда, другая дата). Это была ошибка, поскольку было подтверждено, что ml.exe собирается без нее. Версия 6.15 даже НЕ будет пытаться выполнить сборку без этого файла.
    • MASM дополнен блоком ресурсов версии:
      Хотя MASM был 32-разрядным в течение 4 лет, до сих пор у него никогда не было блока ресурсов версии (просмотрите его, щелкнув ссылку сборки версии выше). Есть одно исключение: MASM386 имел блок ресурсов версии, но он считался нестандартным и устаревшим по сравнению с остальными бинарными файлами Microsoft Win32. Все будущие версии MASM также будут содержать блок ресурсов версии.
    ЧТО ГОВОРИЛИ ДРУГИЕ:
    • Проверка переполнения буфера и стека, предупреждения
      ССЫЛКА: r_harvey
     
    Последнее редактирование: 28 янв 2024
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.780

    MASM 7.1 в Visual C++ .NET 2003 7.1


    НазваниеРазмер
    (байт)
    md5Дата
    ml.exe413696cae874c25467b4566a56b8c9cdc004467/11/2006 6:15pmbuild 7.10.6030 / VS.NET 2003 PRO 7.1
    ml.exe41369663ab5c7120e7b3582eaac18cf0bdcf0f3/24/2005 4:25pmbuild 7.10.4035 / WS03 SP1 DDK
    Версия MASM была выпущена в основном вместе с Visual Studio .NET 2003 7.1 и включена в пакет Windows Server 2003 SP1 DDK 3790.18030, расположенный в «WINDDK\3790.1830\bin\x86».
    СПИСОК ИЗМЕНЕНИЙ:
    • Поддержка SAFESEH:
      Добавлены директива .SAFESEH и параметр /safeseh.
      .SAFESEH identifier

      Регистрирует функцию как структурированный обработчик исключений. идентификатор должен быть идентификатором локально определенного PROC или EXTRN PROC. Метка не допускается. Для директивы .SAFESEH требуется параметр командной строки /safeseh ml.exe. Параметр командной строки описывается в командной строке следующим образом:
      Метит объект как не содержащий обработчиков исключений или содержащий обработчики исключений, все из которых объявлены с помощью .SAFESEH.
      Страница 345 книги «Практический анализ вредоносных программ» проливает некоторый свет на SafeSEH:
    • В отличие от MASM 7.0, @Version правильно сообщает версию, соответствующую номеру сборки; в данном случае 710
     
    Последнее редактирование: 27 янв 2024
  3. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.780

    MASM 8.0 в Visual C++ 2005 8.0


    НазваниеРазмер
    (байт)
    md5Дата
    ml.exe3502084bd78317f0f9e4897d3569dbbc8fad394/21/2006 6:11pmbuild 8.00.50727.104 / VS 2005 8.0 EXPRESS, PRO & ACADEMIC
    ml.exe344576735e3ee3de15a3d96dce84b5242cef339/5/2004 12:15ambuild 8.0.40904.0 / VS 2005 8.0 BETA REFRESH / Win32
    ml64.exe557056ee2bb5d50d50152bcbf588a8c74414749/5/2004 2:06ambuild 8.00.40904 / VS 2005 8.0 BETA REFRESH / Win64
    ml64.exe36966482b8948213657dc7e221ed472772e4a99/5/2004 1:46ambuild 8.00.40904 / VS 2005 8.0 BETA REFRESH / Win64 PE32
    ml64.exe556800e4bbd9390ee30be1fca84b5a2e6c2d5612/2/2006 6:17ambuild 8.00.50727.762 / VS 2005 8.0 SP1 PRO & ACADEMIC / Win64
    ml64.exe381184d17e7a547c2af817fe82b2a0535b10d012/2/2006 6:20ambuild 8.00.50727.762 / VS 2005 8.0 SP1 PRO & ACADEMIC / Win64 PE32
    Visual Studio 2005 предлагала то, чего раньше никогда не было: Express Edition. Это издание содержало полнофункциональную, хотя и ограниченную, интегрированную среду разработки с компиляторами и инструментами для образовательных/пробных целей, доступную для загрузки совершенно бесплатно (конечно, с лицензионными ограничениями). Эти инструменты включали версию MASM 8 для Win32, хотя ее нужно было загружать отдельно (MASMsetup.EXE, выпущенный 7 июня 2006 г.) с веб-сайта Microsoft исключительно для Express Edition. Эта версия была первой версией MASM, предложенной Microsoft совершенно бесплатно.
    Выпуск Express Edition также ознаменовал собой первый случай, когда компилятор C# от Microsoft предлагался бесплатно. Компилятор C/C++ впервые был предложен бесплатно в отдельном пакете загрузки: «Visual C++ Toolkit 2003» (VCToolkitSetup.exe) в предыдущем выпуске Visual C++ (т. е. 7.1). Сюда входили только компилятор C/C++, компоновщик и некоторые библиотеки/включения, но больше ничего. Этот набор инструментов был заменен последующими выпусками Express и Community Edition, предоставляющими доступ к полнофункциональной IDE и инструментам.
    Эта версия также ознаменовала собой дебютный общедоступный выпуск Win64 MASM (ml64.exe) для архитектуры amd64 (также известной как x64, x86-64, EM64T, Intel 64), который поставлялся с профессиональной и академической версиями Visual Studio. Бесплатно будет предлагаться только версия Win32, и то только через пакет MASMsetup.EXE (дополнение). В качестве альтернативы полнофункциональные 64-битные БЕТА-инструменты (включая 64-битные ассемблеры и компиляторы) по-прежнему бесплатно доступны в пакете Microsoft Visual Studio 2005 BETA REFRESH. Как и в случае с MASMsetup.EXE, вы можете извлечь файлы, содержащиеся в этих файлах установки (а также вложенные файлы установки), используя обычную программу извлечения архивов, такую как WinRAR и 7Zip. С появлением нового 64-битного MASM Microsoft включает как 64-, так и 32-битные варианты (PE32+ и PE32 соответственно), позволяющие выполнять 64-битную сборку в 32-битных или 64-битных версиях Windows. Следует отметить, что версии MASM, предлагаемые в бесплатных выпусках (Express/Community), идентичны версиям, представленным в розничных выпусках. Единственная разница — это лицензионные ограничения и временные метки файлов.
    Это была первая версия 32-битного MASM, которая зависела от чего-либо, кроме kernel32.dll (за исключением NTDLL.DLL в версиях 6.1 и 6.1a, выпущенных примерно 13 годами ранее)! MASM теперь зависел от библиотеки времени выполнения Visual C MSVCR80.DLL и ADVAPI32.DLL. Надо отдать должное Microsoft, они сократили размер исполняемого файла с 404 КБ в версии 7 до 342 КБ в версии 8, освободив 62 КБ. Исполняемый файл фактически стал меньше, чем каждая версия MASM, выпущенная после 6.00B (14 лет назад), которая составляла 244 КБ! До версии 8 Microsoft, должно быть, статически связывалась с библиотекой времени выполнения C и, возможно, с другими. Проблема теперь в том, что MSVCR80.DLL имеет размер 621 КБ, поэтому вам придется носить с собой эту штуку с MASM 8, если вы также не хотите установить всю Visual Studio 2005 8.0. Большинство не считает это проблемой, поскольку в настоящее время не только дисковое пространство дешево, но и если вы хотите связать свой объектный код, вам понадобится компоновщик (link.exe). Кроме того, компоновщик зависит от различных исполняемых DLL, начиная с версии 6.15, так что нам следует привыкнуть к раздуванию. :)
    СПИСОК ИЗМЕНЕНИЙ:
    • Выражения MASM теперь являются 64-битными значениями. В предыдущих версиях выражения MASM представляли собой 32-битные значения.
    • Поддержка инструкций SSE3 (также известных как PNI, новые инструкции Prescott), представленная Intel 1 февраля 2004:

      • ADDSUBPDADDSUBPSFISTTPHADDPDHADDPS
        HSUBPDHSUBPSLDDQUMONITORMOVDDUP
        MOVSHDUPMOVSLDUPMWAIT
    • Инструкция __asm int 3 вызывает компиляцию функции в native.
    • теперь документированы следующие: ALIAS (MASM) и .FPO.
    • добавлены операторы: IMAGEREL, HIGH32, LOW32 и SECTIONREL.
    • добавлены инструкции для шлюза вызова .686 (вариант Intel и AMD):
      • SYSENTER
      • SYSEXIT (требуется .686P)
      • SYSCALL
      • SYSRET (требуется .686P)
    • добавлены директивы:
      • MMWORD (64-битный тип данных для MMX)
      • XMMWORD (128-битный тип данных для SSE)
      • SQWORD (QWORD со знаком / 8 байт со знаком / версия недокументированная)
    • Директива SEGMENT теперь поддерживает дополнительные атрибуты.
    • Изменения в параметрах командной строки:
      • /omf теперь подразумевает /c
      • ml.exe не поддерживает связывание объектов формата OMF.
      • /errorReport Опция «Сообщать о внутренних ошибках ассемблера в Microsoft» добавлена в ml.exe и ml64.exe.
      • /Sc «Создание времени в листинге» больше не поддерживается. Microsoft либо больше не должна думать, что люди беспокоятся о такте каждой инструкции, либо может оказаться слишком сложно поддерживать тайминг каждой инструкции на различных типах процессоров. На новых процессорах также может быть невозможно получить точные тайминги.
      В официальной документации версий 7.1 и 8.0 эта опция больше не указана:
      • /Sg (код asm в листинге) (опция все еще работает, но, похоже, является синонимом /Sa)
      В этих документах также говорится:
      • /w теперь подразумевает /W0 и /WX вместо просто /W0
      Этот параметр был добавлен в документацию (хотя он присутствовал в командной строке версии 7.1):
      • /X (игнорировать переменную среды INCLUDE)
    • H2INC.exe не будет поставляться в Visual C++ 2005. Если он вам все еще нужен, используйте предыдущую версию.
    • Знакомство с 64-битным ассемблером (ml64.exe):
      ml64 — это версия MASM для архитектуры x64. Он объединяет файлы .asm x64 в объектные файлы x64. Встроенный язык ассемблера не поддерживается компилятором x64. Кроме того, следующие аргументы командной строки, доступные для 16/32-разрядной версии, недоступны для ml64:
      • /AT (tiny модель)
      • /coff (общий формат объектного файла)
      • /omf (формат файла объектного модуля)
      • /Cu (идентификаторы в верхнем регистре)
      • /FPi (исправления эмулятора с плавающей запятой)
      • /Gc (соглашение о вызовах FORTRAN или Pascal)
      • /Gd (соглашение о вызовах в стиле C)
      • /GZ (соглашение о вызовах stdcall)
      • /H (значащие символы внешнего имени)
      • /safeseh (без обработчиков исключений или все обработчики .SAFESEH.)
      • /Zm (совместимость с M510)
      Следующие директивы MASM были добавлены для ml64 (x64):
      • .ALLOCSTACK
      • .ENDPROLOG
      • .PUSHFRAME
      • .PUSHREG
      • .SAVEREG
      • .SAVEXMM128
      • .SETFRAME
      • PROC (обновлен синтаксисом только для x64)
    ЧТО ГОВОРИЛИ ДРУГИЕ:
    • Поддержка набора инструкций SSE3:
      ССЫЛКА: Статья Intel: Streaming Simd Extensions 3/VS.NET 2003
      ССЫЛКА: pcdosretro
    • Быстрое время компиляции, более строгая проверка типов, отдельные 32-битные и 64-битные ассемблеры, в 64-битной версии отсутствуют многие функции:
      «Одна из замечательных особенностей MASM 8.0 (кроме более быстрого времени компиляции) — это более строгая проверка типов».
      «Наверное, самая разочаровывающая часть MASM 8 заключается в том, что Microsoft решила разделить ассемблер: один для 32-битного и один для 64-битного типа. А 64-битной версии не хватает многих качеств своего старшего брата. не поддерживает многие конструкции более высокого уровня или соглашения о вызовах. Поэтому нет .IF, .WHILE или автоматического объявления параметров функции. Второстепенные nits включают отсутствие поддержки украшения имени функции C++ и отсутствие поддержки соглашений о вызовах на основе регистров (таких как __fastcall Это только усложняет задачу интеграции 32-битного и 64-битного ассемблерного кода с C и C++».
      ССЫЛКА: Блоги Phoenix Technologies, 2006
    • Различные мнения заключаются в том, что MASM 8 сломал код, который работал с предыдущими версиями:
      «Я пробовал ML.exe и Link.exe из последней версии VisualStudio 2005, но это отстой. Linker 8.0 не поддерживает некоторые переключатели командной строки, ассемблер иногда дает сбой с хорошим (хорошо собранным всеми предыдущими версиями) кодом»
      «Я согласен, что ML.EXE 8.00 из Visual Studio 2005 не так уж хорош».
      ССЫЛКА: Форум Winasm
    • ОШИБКИ, ИСПРАВЛЕННЫЕ в версии 8: ССЫЛКА: Руководство JWasm.
      • «TYPE xmm0» вернет 10 в Masm v6 и v7 — правильное значение — 16.
      • для Masm v6 и v7, если определен массив > 64 КБ и выбран выходной формат OMF, размер массива будет только по модулю 10000h.
      • молчаливое усечение непосредственных констант: Masm v6 и v7 без ошибок примет строку mov [word_variable],12345h.
      • Если раздел содержит более 0FFFFh перемещений в COFF, количество перемещений, хранящееся в объектном модуле, представляет собой просто значение младшей 16-битной половины счетчика перемещений.
     
    Последнее редактирование: 27 янв 2024
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.780

    MASM 9.0 в Visual C++ 2008 9.0


    НазваниеРазмер
    (байт)
    md5Дата
    ml.exe36196816ca0bd9537b96e91efdd234007999cb7/30/2008 12:05pmbuild 9.00.30729.01 / VS 2008 9.0 (any*) / Win32
    ml64.exe387064009923b2441a8bb3e6686db8aa15e5f67/30/2008 1:58pmbuild 9.00.30729.01 / VS 2008 9.0 (any*) / Win64
    ml64.exe308216aa9d358c6f5f20772aaaff4455326dd77/30/2008 2:11pmbuild 9.00.30729.01 / VS 2008 9.0 (any*) / Win64 PE32
    ml.exe3527682a2b8d75e359e6311de1195e65dbf2522/8/2010 7:18pmbuild 9.00.30729.207 / WDK 7.1 7600.16385.1 / Win32
    ml64.exe29900869fa9f19d8a7ac3ea85f867415016a022/8/2010 7:18pmbuild 9.00.30729.207 / WDK 7.1 7600.16385.1 / Win64 PE32
    *Версия MASM, поставляемая с Express Edition, идентична версии розничной версии; для Express Edition требовался пакет обновления 1 для получения MASM. Он также распространялся вместе с комплектом драйверов Windows (WDK) 7.1.0. Это была последняя полнофункциональная версия MASM, поддерживавшая устаревший 16-битный код DOS и процессоры семейства 80x86 до версии 386. В MASM 10 эта поддержка удалена. Это была первая версия MASM, для которой требовалась Windows 2000, в отличие от Windows 95, которая требовалась для всех предыдущих версий, начиная с 6.12. Список изменений, приведенный ниже, основан на информации MSDN, найденной в VS2008 Compiler Intrinsics. Компилятор C/C++ задокументировал поддержку новых встроенных функций, отраженных в новых поддерживаемых наборах инструкций MASM, но ни слова об изменениях MASM.
    СПИСОК ИЗМЕНЕНИЙ:
    • Поддержка нового набора команд:
      • SSSE3 (Supplemental Streaming SIMD Extensions 3), выпущенный Intel 26 июня 2006
      • SSE4.1, SSE4.2, SSE4A (Streaming SIMD Extensions 4, также известное как «HD Boost»), выпущенное Intel 27 сентября 2006
      • AES (Новые инструкции расширенного стандарта шифрования или AES-NI), предложенный Intel в марте 2008
    ЧТО ГОВОРИЛИ ДРУГИЕ:
    • Руководство JWasm:
      • Исправлены ошибки в версии 9: печально известная ошибка «вызова»: если аргумент вызова необходимо расширить (например, с BYTE или WORD до DWORD), генерируется плохой код.
        ССЫЛКА: Руководство JWasm
    • Выдающиеся ошибки:
      • Поддержка подстановочных знаков (*.asm) прекращена с версии 8.0.
        ССЫЛКА: Форум MASM
      • Вы можете передать в макрос больше аргументов, чем необходимо:
        include \masm32\include\masm32rt.inc
            MBox MACRO text:REQ, title:REQ, style:REQ ; 3 arguments received
              invoke MessageBox, 0, text, title, style
            ENDM
            .code
            MyTitle db "Ciao", 0
            start:
            MBox 0, chr$("Message text, not title!"), addr MyTitle, MB_OK ; 4 arguments passed
            exit
            end start

        ССЫЛКА: Форум MASM
      • Сборка становится медленной, и ML может в конечном итоге зависнуть из-за буферов в памяти более 0,6 Мбайт:
            .data?
            MySlowBuffer db 600000 dup(?) ; 0.6 mega: about 5 seconds

        Обходной путь — макрос, использующий директиву ORG (этой идеей я обязан Drizz и MichaelW):
            include \masm32\include\masm32rt.inc
            mkbuf MACRO var, BufLen
            LOCAL lbl
            .data?
            align 4
              lbl LABEL byte
              ORG $+BufLen-1
              db ?
            .data
            var dd lbl ;; define it in the data section
            .code
            ENDM
            .data?
            ; MySlowBuffer db 600000 dup(?) ; 0.6 mega: about 5 seconds
            .code
            start: mkbuf MyBuffer, 100000000 ; one-hundred mega
            invoke MessageBox, 0, chr$("Done!"), chr$("Fat buffer:"), MB_OK
            exit
            end start

        ССЫЛКА: Форум MASM
      • Проблема смещения: обе версии этого кода работают для ml 6.14 и JWasm, но ml 9.0 говорит «ошибка A2070: неверные операнды инструкций».
            .data
            MyAccels ACCEL <FCONTROL or FVIRTKEY, VK_S, IdMenuSave>
            LastAccel ACCEL <FVIRTKEY, VK_ESCAPE, IdEscape>
            . . .
            .code
            invoke CreateAcceleratorTable, addr MyAccels,
            1+(offset LastAccel-MyAccels)/SIZEOF ACCEL
            invoke CreateAcceleratorTable, addr MyAccels,
            1+(dword ptr LastAccel-dword ptr MyAccels)/(SIZEOF ACCEL)

        Обходной путь пока не найден, кроме принесения в жертву регистра...
        ССЫЛКА: Форум MASM
      • Руководство JWasm: ошибки ВСЕ ЕЩЕ ПРИСУТСТВУЮТ в версии 9 (возможно, исправлены в будущих версиях):
        Многие из этих ошибок достаточно старые, поэтому, благодаря Microsoft, они, вероятно, стали «фичами». Неизвестно, в какой именно версии MASM возникла каждая ошибка, но многие из них присутствовали в версиях «золотого стандарта» MASM 6.14 и 6.15, что, вероятно, способствовало тому, что их не исправлять. Хотя возможно, что некоторые или все из них никогда не будут исправлены, возможно, некоторые из них были исправлены в версии 10 и/или более поздних версиях. Приведенный ниже список ошибок был скопирован из документации JWAsm (ближайший доступный и бесплатный клон MASM), но JWAsm исправил их все, начиная с версии 2.11a (выпущенной 16 ноября 2013 г.)!
        • PROTO, дважды содержащиеся в исходном коде, привели к созданию записи EXTDEF в объектном модуле.
        • вложенная структура может вызвать GPF в Masm, если начальное смещение встроенной STRUCT необходимо отрегулировать из-за выравнивания.
        • определение огромных массивов в Masm происходит очень медленно и может даже вызвать тупик, если в качестве выходного формата выбран COFF.
        • Masm не помечает недопустимые числа в строках инициализатора структуры/массива. если где-то в исходном коде определен псевдоним и указана таблица символов, в Masm возникает ошибка «Общая ошибка», если формат вывода — OMF. Тип «приведение» для элементов данных DWORD, определенных в 32-битном сегменте, игнорируется Masm, т. е. «dd Far16 ptr <символ>» будет генерировать исправление Near32 вместо Far16.
        • если директива ALIGN должна добавить 5 байтов в 32-битные сегменты кода, Masm включает код операции «add eax,0», который не является пустым, поскольку флаги изменяются.
        • предварительно обработанный вывод с опцией -EP может ошибочно содержать текстовые макросы и вызовы функций макросов, если макросы расположены в строке инициализации структурированной переменной.
        • Masm генерирует неправильный код, если условный переход сочетается с приведением типа, которое изменяет величину смещения. Примеры: «jz near32 ptr . . .» в 16-битном коде или «jz near16» в 32-битном коде.
        • если аргументы, переданные Masm, заканчиваются опцией, которая ожидает параметр (т. е. «ml -c -Fo»), может произойти «Общая ошибка».
        • За элементами данных с плавающей запятой в Masm может следовать любой суффикс (пример: REAL4 1.0foo, 2.0bar). JWasm этого не примет.
        • Если локальный объект определен внутри макроса, Masm создаст для него уникальное имя. Имя создается с помощью '??' в качестве префикса, за которым следует шестнадцатеричное число из 4 цифр. Однако проверка на переполнение отсутствует, поэтому, если общее количество локальных значений во всех макросах превысит 65536, возникнут странные ошибки.
        • Если для -coff с помощью директивы ALIAS определено слабое внешнее значение, создается недопустимое исправление, а также странная запись в таблице символов модуля.
        • Если символическая константа (=equate) опубликована в формате OMF, Masm сохранит значение символа в 16-битной записи, если оно находится в диапазоне -32768...65535. Если на символ ссылаются в другом модуле как на 32-битное число, оно всегда расширяется нулями и никогда не расширяется знаком; следовательно значения -1...-32768 станут 65535...32768.
        • если метки данных становятся общедоступными с помощью опции -Zf (а не директивы PUBLIC), их имена не оформляются. Кроме того, если формат COFF, они не станут настоящими общедоступными, они просто будут включены в таблицу символов с классом «статический».
      ССЫЛКА: Руководство JWasm
     
    Последнее редактирование: 27 янв 2024
  5. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.780

    MASM 10.0 в Visual C++ 2010 10.0


    НазваниеРазмер
    (байт)
    md5Дата
    ml.exe397120c60f9e0657e639019388c6c3f223aa983/19/2010 2:02pmbuild 10.00.30319.01 / Win32
    ml64.exe4524243c024c12974359fab262afe9789a7b5d3/19/2010 2:02pmbuild 10.00.30319.01 / Win64 / Retail Only
    ml64.exe349000660f05d6f2c7016b2cf72964a16ed0e43/19/2010 2:02pmbuild 10.00.30319.01 / Win64 PE32
    ml.exe4114562d0869f6bb8725501c4d476606044f192/21/2011 6:03pmbuild 10.00.40219.01 SP1 / Win32
    ml64.exe474952f1f1958ac367e5c31c9d25588c95af442/21/2011 7:53pmbuild 10.00.40219.01 SP1 / Win64 / Retail Only
    ml64.exe36333639f9d0d63e99d255e745faf4050ca83c2/21/2011 7:53pmbuild 10.00.40219.01 SP1 / Win64 PE32
    Visual Studio 10.0 Express выпустила 32-битные исполняемые версии (PE32) ассемблеров ml.exe и ml64.exe, те же, что были выпущены в розничных выпусках, за исключением других временных меток. В выпуске Express Edition не было 64-разрядного файла ml64.exe. Были небольшие различия в двоичном исполняемом файле исходной версии и SP1. Эти различия, скорее всего, связаны с изменением номера сборки в блоке ресурсов версии, но без изменений функциональности.
    Версия 10.0, появившаяся через 29 лет после своей первоначальной версии в 1981, внесла одно из самых значительных изменений в историю MASM. 16-разрядные сборки для DOS и процессоры до 32-разрядных режимов 386 больше не поддерживаются. Это была первая версия MASM, для которой требовалась как минимум Windows XP.
    СПИСОК ИЗМЕНЕНИЙ:
    • Поддержка набора инструкций AVX (расширенные векторные расширения) (предложено Intel в марте 2008)
      • Поддержка регистров YMMx; то есть ymm0-ymm8 для x86
    • Добавление типа данных YMMWORD поддерживает 256-битные мультимедийные операнды, включенные в инструкции Intel Advanced Vector Extensions (AVX).
    • Несколько директив были удалены из компилятора Microsoft Macro Assembler Reference. Удаленные директивы: .186, .286, .286P, .287, .8086, .8087 и .NO87.
    • В ML.exe удалены следующие параметры командной строки (хотя Microsoft не обновила их в справке):
      • /AT «Включить tiny-модель (COM-файлы)»
      • /FPi «Использовать эмулятор 80x87»
      • /H «Установить максимальную длину внешнего имени»
    ЧТО ГОВОРИЛИ ДРУГИЕ:
     
    Последнее редактирование: 27 янв 2024
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.780

    MASM 11.0 в Visual Studio Express 11.0 (2012)


    НазваниеРазмер
    (байт)
    md5Дата
    ml.exe4346081e94f1e7fdea87a5e0cc22463f298c147/26/2012 7:08pmbuild 11.00.50727.1 / Win32
    ml64.exe388536a333d57ee9d988c11584fca2114f28d17/26/2012 7:08pmbuild 11.00.50727.1 / Win64 PE32
    Первая версия MASM (и всего набора инструментов Visual Studio), для которой требовалась операционная система как минимум Windows Vista. Это изменение было внесено в заголовок PE. Помимо этого, официального списка изменений не было опубликовано, и разница в документации MSDN также не выявила никаких изменений.
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.780

    MASM 12.0 в Visual Studio 12.0 (2013)


    НазваниеРазмер
    (байт)
    md5Дата
    ml.exe438920248f463dc5dbb770bc695c7fdc647d2410/5/2013 2:38ambuild 12.00.21005.1 из VS 2013 Express for Desktop / Win32
    ml64.exe3933600fc4a6cc54cc41e62ddc20a58580d61c10/5/2013 2:38ambuild 12.00.21005.1 из VS 2013 Express for Desktop / Win64 PE32
    ml.exe439416ab9bb772f3e2c40dea3942ee3b960eb311/1/2014 12:46ambuild 12.00.31101.0 из VS 2013 Community UPDATE 4 / Win32
    ml64.exe5177446dff37bc4dbc74121fd6b01d9c987e2a10/31/2014 8:44pmbuild 12.00.31101.0 из VS 2013 Community UPDATE 4 / Win64
    ml64.exe393344918bf14035f6a5859941f7e8f81f1d1911/1/2014 12:46ambuild 12.00.31101.0 из VS 2013 Community UPDATE 4 / Win64 PE32
    Набор инструментов Visual Studio 12.0 (2013 г.) (включая эту версию MASM) был отмечен дебютным выпуском Community Edition: бесплатной версии Visual Studio для частных лиц, научных кругов, проектов с открытым исходным кодом и малого бизнеса, функционально эквивалентной профессиональной версии. Версия без функций CodeLens и Team Foundation Server. Microsoft, как ни странно, продолжала выпускать бесплатную и урезанную версию Express Edition. Выпуски Visual Studio Community и Express включали MASM.
    К сожалению, официального списка изменений не было опубликовано, и разница в документации MSDN также не выявила никаких изменений.
     
  8. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.780

    MASM 14.0 в Visual Studio 14.0 (2015)


    НазваниеРазмер
    (байт)
    md5Дата
    ml.exe446600977a2329c414f9f83d08a2806a3708576/25/2015 11:34pmbuild 14.00.23026.0 из VS 2015 Community 14.0.23107.0 D14REL / Win32
    ml64.exe52596843149845421ecf4e7c4636c512ec1c8a6/25/2015 11:15pmbuild 14.00.23026.0 из VS 2015 Community 14.0.23107.0 D14REL / Win64
    ml64.exe4010400d7c443b13fa36f7aa7b6cdf58967e966/25/2015 11:34pmbuild 14.00.23026.0 из VS 2015 Community 14.0.23107.0 D14REL / Win64 PE32
    ml.exe448144b367521929cf508b3970656062f94be912/20/2016 2:01pmbuild 14.0.24218.2 в комплекте с VS 2017 Community
    ml64.exe52853627ce9ec0761b73ecca6d58d1353dedc912/20/2016 2:04pmbuild 14.0.24218.2 в комплекте с VS 2017 Community / Win64
    ml64.exe402584147c157c739ebb6f4b47ceb2776ed22a12/20/2016 2:01pmbuild 14.0.24218.2 в комплекте с VS 2017 Community / Win64 PE32
    Это должна была быть MASM 13.0, но весь набор инструментов Visual Studio пропустил «несчастливое» число в пользу 14.0. В 2013 Microsoft подвергся критике со стороны суеверных людей за выпуск Visual Studio 2013. Microsoft не повторяют одну и ту же ошибку дважды!
    В этой версии библиотека зависимостей среды выполнения C Visual Studio 14.0 (2015) была реструктурирована, что затронуло большинство инструментов, включая MASM. То, что раньше было MSVCR140.DLL, теперь разбито на VCRUNTIME140.DLL и различные библиотеки DLL «api-ms-win-crt-CCC-VVV», где CCC — это категория, а VVV — версия. Как и в случае с двумя предыдущими основными версиями MASM, для этой версии не было опубликовано официального списка изменений, и анализ документации MSDN не выявил никаких изменений.
    Дополнительное примечание, которое может представлять интерес, — некоторые новые зависимости, принятые компоновщиком Microsoft:
    • Для компоновщиков x86 и x64 требуется среда выполнения Microsoft C++ (MSVCP140.DLL).
    • При связывании минимального модуля x64 компоновщику требуется MSPDBCORE.DLL, независимо от того, создается PDB или нет.
     
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.780

    MASM 14.1 в Visual Studio 14.1 (2017)


    НазваниеРазмер
    (байт)
    md5Дата
    ml.exe448120ecc043b8d870abea675ee355817ced4c7/21/2017 5:22pmbuild 14.10.25019.0 из VS 2017 Community
    ml64.exe53055237f3b9efb39bf0d161297cec8f3f37217/21/2017 5:22pmbuild 14.10.25019.0 из VS 2017 Community
    ml64.exe404600bc79bb646b9d7999cbf99994bd4523687/21/2017 5:22pmbuild 14.10.25019.0 из VS 2017 Community
    Следующее издание набора инструментов Visual Studio (2017) изначально началось с версии 14.1, но по состоянию на конец 2017 оно находится в диапазоне 15.x из-за изменений, которые Microsoft внесла в свой метод управления версиями сборки. Конкретный номер версии больше не привязан к году выпуска, начиная с 2017.
    На данный момент набор инструментов Visual Studio настолько велик, что Microsoft прекратила выпуск DVD-образов ISO-установщика. Теперь пользователь вынужден использовать свой веб-загрузчик для загрузки отдельных компонентов, которые ему нужны. Наборы инструментов, включающие MASM (а также другие связанные инструменты Visual C++), присутствуют в любом из следующих компонентов:
    • Microsoft.VisualStudio.Product.BuildTools (инструменты сборки Visual Studio)
    • Microsoft.VisualStudio.Workload.NativeMobile (разработка мобильных устройств на C++)
    • Microsoft.VisualStudio.Workload.NativeDesktop (разработка настольных компьютеров на C++)
     
    Последнее редактирование: 27 янв 2024