Кіріспе

Intel микропроцессорлары үшін құрастырушы

Microsoft Macro Assembler (MASM) – MS DOS және Microsoft Windows үшін Intel синтаксисін қолданатын x86 құрастырушысы. MASM 8.0 нұсқасынан бастап құрастырушының екі түрі бар: біреуі 16 биттік және 32 биттік құрастыру кодтары үшін, ал екіншісі (ML64) – тек 64 биттік кодтар үшін. MASM-ді Microsoft қолдайды, бірақ 6.12 нұсқасынан бері ол жеке өнім ретінде сатылмайды. Оның орнына, ол әртүрлі Microsoft SDK және C компиляторларымен бірге ұсынылады. MASM-нің жаңа нұсқалары Microsoft Visual Studio жиынтығымен бірге келеді. MASM арқылы құрастырылған танымал бағдарламалардың бірі – RollerCoaster Tycoon, ол 99% құрастыру тілінде жазылып, MASM-мен құрастырылған.

Тарих

MASM-нің ең алғашқы нұсқалары 1981 жылға дейін жетеді. Олар барлық x86 машиналары үшін жалпылама «Microsoft Macro Assembler» ретінде немесе IBM PC-лер үшін арнайы OEM нұсқасы ретінде сатылды. 4.0 нұсқасына келгенде IBM шығарылымы тоқтатылды. 3.0 нұсқасына дейін MASM кішкентай серігі ASM құрастырғышымен бірге келді. EXE. Бұл тек 64 килобайт жады бар компьютерлер үшін арналған еді және толық MASM-нің кейбір мүмкіндіктерінен, мысалы, код макростарын пайдалану мүмкіндігінен құралмайтын. MS DOS-тың 4.x нұсқаларына дейін Microsoft-тың LINK құралы кірді, ол MASM және басқа компиляторлар жасаған аралық OBJ файлдарын түрлендіруге арналған; алайда, бағдарламалаумен айналыспайтын пайдаланушылар үшін бұл құрал қажет болмағандықтан, ол олардың компилятор жиынтығына көшірілді. 1985 жылдың қазан айында шыққан 4.0 нұсқасы 286 командаларын қолдауды қосты. 1987 жылдың тамызында шыққан 5.0 нұсқасы 386 командаларын және сегмент сипаттамалары үшін қысқартылған мнемоникаларды (.code, .data және т.б.) қолдады, бірақ ол тек нақты режимде жұмыс істейтін атқарылатын файлдарды ғана жасауға болатын. 5.0 нұсқасына дейін MASM тек MS DOS қолданбасы ретінде қолжетімді болды. 5.1 және 6.0 нұсқалары MS DOS және OS/2 қолданбалары ретінде қолжетімді болды. 1991 жылы шыққан 6.0 нұсқасы «invoke» және басқа да жоғары деңгейдегі сияқты конструкциялармен параметрлерді беруді қосты, сондай-ақ жоғары деңгейдегі сияқты жазбалар сияқты басқа да мүмкіндіктерді ұсынды. 6.0 және 6.0B нұсқаларының екеуі де 8086 процессорында жұмыс істей алатын, бірақ 32 биттік 386 кодын жасауға қабілетті болды. 1992 жылы 6.1 нұсқасы шықты, ол Windows NT қолданған COFF нысандық форматын қолдады және OS/2 үшін қолдауды жойды. 6.1 Win32 API әлі аяқталмағандықтан екі режимде жұмыс істейтін бинарлық файл ретінде құрастырылды және экспортталмағандықтан Windows NT-де жұмыс істеуге үйлесімсіз. 1993 жылы қорғалған режимдегі 32 биттік қолданбалар және Pentium командалар жиынтығына толық қолдау қосылды. Сол кездегі (1993 жыл) 6.11 MASM бинарлық файлы «екі режимде» (win32, яғни PE) DOS кеңейтілген бинарлық файлы ретінде (Phar Lap TNT DOS кеңейтушісін пайдалана отырып) жеткізілді. Дегенмен, setup.exe – бұл MZ атқарылатын файлы, сондықтан ол Windows-тың 64 биттік нұсқаларында жұмыс істемейді, ал ml.exe екі режимде жұмыс істейді, бірақ ыдырату. exe – бұл NE атқарылатын файлы, сондықтан ол да Windows-тың 64 биттік нұсқаларында жұмыс істемейді (егер сіз қажетті ml.exe және ml.err файлдарын қолмен алуды жоспарласаңыз), сондықтан оны орнату үшін сізге 32 биттік Windows (немесе MSDOS) жүйесіне қол жеткізу қажет. 6.11 нұсқасы – MS DOS жүйесінде жұмыс істейтін MASM-нің соңғы нұсқасы. 6.11d-ге дейін 32 биттік Windows-та жұмыс істеуді қажет ететін бірнеше түзетулер болды, бірақ түзетілген ml.exe файлында Phar Lap dos extender бар, сондықтан оны MSDOS-та да орындауға болады. 6.12-ден 6.14-ке дейінгі нұсқалар 6.11 нұсқасы үшін түзетулер ретінде жүзеге асырылды. Бұл түзетулер PK атқарылатын файлдарды (яғни MSDOS) өздігінен шығарып алатын, сондықтан олар 64 биттік Windows-та жұмыс істемейді. Тіпті оларды басқа тәсілмен шығарсаңыз да, patch.exe – бұл NE атқарылатын файлы, сондықтан ол ml.exe файлын жаңарту үшін 64 биттік Windows-та жұмыс істемейді. Егер сіз 32 биттік Windows (немесе одан ертерек) жүйесінде жұмыс істесеңіз, түзету ml.exe файлынан Phar Lap dos extender-ді алып тастайды, сондықтан оны енді MSDOS-та орындауға болмайды. Phar Lap-ты алып тастау атқарылатын файлдың MZ бөлігін кішірейтеді, сондықтан «PE» қолтаңбасы 6.11 нұсқасындағыдай файлдың ішінде алыс жатпайды. 1997 жылдың соңына қарай MASM Windows 95 жүйесін толық қолдады және кейбір AMD-ге арналған командаларды қамтыды. 1999 жылы Intel SIMD және MMX командалары үшін макростарды шығарды, олар көп ұзамай MASM-мен қолдау тапты. 2000 жылы 6.15 нұсқасымен Microsoft MASM-ді жеке өнім ретінде қолдауды тоқтатты, оның орнына оны Visual Studio құралдар жиынтығына біріктірді. Ол әлі де Windows 98 жүйесімен үйлесімді болса да, Visual Studio-ның қазіргі нұсқалары осымен үйлесімді емес. (PE/COFF) форматы. PE/COFF соңғы Microsoft C компиляторларымен үйлесімді, ал MASM немесе C компиляторымен жасалған нысандық модульдер Win32 және Win64 бинарлық файлдарына жүйелі түрде қосылып, байланыстырыла алады.

MASM-мен үйлесімді құрастырушылар

Кейбір басқа құрастырушылар күрделі макростардан басқа, MASM үшін жазылған кодтың көп бөлігін құрастыра алады. Turbo Assembler (TASM) Borland компаниясы әзірлеген, кейін Embarcadero иелігіне өткен, соңғы рет 2002 жылы жаңартылған, бірақ C++Builder және RAD Studio жиынтығымен бірге әлі де қолжетімді. JWasm Macro Assembler, Sybase Open Watcom EULA лицензиясымен беріледі. Соңғы жаңарту 2014 жылы жасалған. Pelle's Macro Assembler, Pelles C әзірлеу ортасының бір бөлігі. UASM – JWasm негізінде құрылған, MASM форматымен үйлесімді тегін құрастырушы. ASMC – JWasm негізінде құрылған, MASM форматымен үйлесімді тегін құрастырушы.

Аралас тілдерді бағдарламалауды қолдау

1987 жылғы 5.1 нұсқасының құжаттамасында "Microsoft BASIC, C, FORTRAN, Pascal" тілдеріне қолдау бар еді.