อ่าน 4 นาที
ไมโครซอฟต์ มาโครแอสเซมเบลอร์
Microsoft Macro Assembler ( MASM ) เป็น แอสเซมเบลอร์ x86 ที่ใช้ ไวยากรณ์ของ Intel สำหรับ MS-DOS และ Microsoft Windows ตั้งแต่ MASM เวอร์ชัน 8.
ไมโครซอฟต์ มาโครแอสเซมเบลอร์
| ไมโครซอฟต์ มาโครแอสเซมเบลอร์ | |
|---|---|
| นักพัฒนา | ไมโครซอฟต์ |
| ปล่อย | 1981 |
| เวอร์ชันเสถียร | 14.16.27023.1 / 7 มีนาคม 2017 |
| ระบบปฏิบัติการ | ไมโครซอฟต์ วินโดวส์และเอ็มเอส-ดีโอเอส |
| พิมพ์ | แอสเซมเบลอร์ |
| ใบอนุญาต | ซอฟต์แวร์กรรมสิทธิ์เชิงพาณิชย์ |
| เว็บไซต์ | docs.microsoft.com/en-us/cpp/assembler/masm/microsoft-macro-assembler-reference |
Microsoft Macro Assembler ( MASM ) เป็นแอสเซมเบลอร์x86 ที่ใช้ไวยากรณ์ของ IntelสำหรับMS-DOSและMicrosoft Windowsตั้งแต่ MASM เวอร์ชัน 8.0 เป็นต้นไป มีแอสเซมเบลอร์สองเวอร์ชัน คือ เวอร์ชันสำหรับซอร์สโค้ด แอสเซมบลี 16 บิตและ32 บิตและอีกเวอร์ชันหนึ่ง ( ML64 ) สำหรับ ซอร์สโค้ด 64 บิตเท่านั้น
MASM เป็นโปรแกรมที่พัฒนาโดยMicrosoftแต่ตั้งแต่เวอร์ชัน 6.12 เป็นต้นมา ไม่ได้จำหน่ายเป็นผลิตภัณฑ์แยกต่างหาก แต่จะถูกรวมไว้ในSDKและคอมไพเลอร์C ต่างๆ ของ Microsoft แทน เวอร์ชันล่าสุดของ MASM ถูกรวมอยู่ในMicrosoft Visual Studioด้วย
แอปพลิเคชันที่โดดเด่นซึ่งคอมไพล์โดยใช้ MASM ได้แก่RollerCoaster Tycoonซึ่งเขียนด้วยภาษาแอสเซมบลี 99% และสร้างด้วย MASM [ 1 ]
ประวัติศาสตร์
MASM เวอร์ชันแรกสุดมีอายุย้อนไปถึงปี 1981 [ 2 ]มีการจำหน่ายในรูปแบบ "Microsoft Macro Assembler" ทั่วไปสำหรับเครื่อง x86 ทั้งหมด หรือในรูปแบบ OEM สำหรับพีซี IBM โดยเฉพาะ เมื่อถึงเวอร์ชัน 4.0 การจำหน่าย สำหรับ IBMก็ถูกยกเลิก จนถึงเวอร์ชัน 3.0 MASM ยังมาพร้อมกับแอสเซมเบลอร์ขนาดเล็กกว่า ASM.EXE ซึ่งมีจุดประสงค์สำหรับพีซีที่มีหน่วยความจำเพียง 64k และขาดคุณสมบัติบางอย่างของ MASM เวอร์ชันเต็ม เช่น ความสามารถในการใช้มาโครโค้ด
ระบบปฏิบัติการ MS-DOS เวอร์ชันจนถึง 4.x มีโปรแกรม LINK ของ Microsoft ซึ่งออกแบบมาเพื่อแปลงไฟล์ OBJ ระหว่างกลาง ที่สร้างโดย MASM และคอมไพเลอร์อื่นๆ อย่างไรก็ตาม เนื่องจากผู้ใช้ที่ไม่เขียนโปรแกรมไม่จำเป็นต้องใช้โปรแกรมนี้ จึงถูกย้ายไปรวมอยู่ในแพ็กเกจคอมไพเลอร์แทน
เวอร์ชัน 4.0 ซึ่งวางจำหน่ายในเดือนตุลาคม พ.ศ. 2528 ได้เพิ่มการรองรับคำสั่ง 286 เข้ามา
เวอร์ชัน 5.0 ซึ่งวางจำหน่ายในเดือนสิงหาคม พ.ศ. 2530 รองรับ คำสั่ง 386คำสั่ง และยังรองรับตัวย่อสำหรับคำอธิบายเซ็กเมนต์ (.code, .data เป็นต้น) แต่ก็ยังคงสร้างไฟล์ปฏิบัติการได้เฉพาะในโหมดเรียลเท่านั้น
MASM สามารถใช้งานได้เฉพาะบนMS-DOS เท่านั้นจนถึงเวอร์ชัน 5.0 ส่วนเวอร์ชัน 5.1 และ 6.0 สามารถใช้ งานได้ทั้งบนMS-DOSและOS/2 [ 3 ]
เวอร์ชัน 6.0 ซึ่งวางจำหน่ายในปี 1991 ได้เพิ่มการส่งผ่านพารามิเตอร์ด้วย "invoke" และโครงสร้างระดับสูงอื่นๆ นอกเหนือจากเรคอร์ด ระดับสูงที่มีอยู่แล้ว เป็นต้น ทั้งเวอร์ชัน 6.0 และ 6.0B สามารถทำงานบน โปรเซสเซอร์ 8086ได้ แต่สามารถสร้างโค้ด 32 บิต 386 แบบธรรมดาได้ ในปี 1992 ได้มีการวางจำหน่ายเวอร์ชัน 6.1 ซึ่งเพิ่มการสนับสนุนรูปแบบออบเจ็กต์ COFF ที่ใช้โดยWindows NTและลบการสนับสนุนสำหรับ OS/2 เวอร์ชัน 6.1 ถูกสร้างขึ้นเป็นไบนารีแบบสองโหมดก่อนที่Win32 APIจะเสร็จสมบูรณ์ และไม่สามารถใช้งานบน Windows NT ได้เนื่องจากการส่งออกที่ขาดหายไป[ 4 ]
ในปี 1993 ได้มีการเพิ่มการสนับสนุนอย่างเต็มรูปแบบสำหรับแอปพลิเคชัน 32 บิตในโหมดป้องกันและ ชุดคำสั่ง Pentium ไบนารี MASM เวอร์ชัน 6.11 ในเวลานั้น (1993) ถูกจัดส่งในรูปแบบไบนารีแบบ "สองโหมด" (win32 หรือ PE ) ที่ขยายสำหรับ DOS (โดยใช้ ตัวขยาย DOS Phar Lap TNT) อย่างไรก็ตาม ไฟล์ setup.exe เป็นไฟล์ปฏิบัติการ MZ ดังนั้นจึงไม่สามารถทำงานบน Windows เวอร์ชัน 64 บิตได้ และไฟล์ ml.exe แบบสองโหมดนั้นถูกบีบอัดและไฟล์ decomp.exe เป็นไฟล์ปฏิบัติการ NE ดังนั้นจึงไม่สามารถทำงานบน Windows เวอร์ชัน 64 บิตได้เช่นกัน ดังนั้นคุณจึงจำเป็นต้องใช้ Windows 32 บิต (หรือ MSDOS) เพื่อติดตั้ง เวอร์ชัน 6.11 เป็นเวอร์ชันสุดท้ายของ MASM ที่สามารถทำงานบน MS-DOS ได้ มีแพทช์ หลายชุด ให้ใช้งานได้จนถึงเวอร์ชัน 6.11d ซึ่งต้องใช้ Windows 32 บิตในการทำงาน แต่ไฟล์ ml.exe ที่ได้รับการแก้ไขแล้วยังคงมีส่วนขยาย Phar Lap dos อยู่ จึงยังคงสามารถเรียกใช้งานได้ภายใต้ MSDOS
ภายในสิ้นปี พ.ศ. 2540 MASM รองรับWindows 95 อย่างสมบูรณ์ และมีคำสั่งเฉพาะของ AMD บางส่วน [ 5 ]
ในปี 1999 Intel ได้ปล่อยมาโครสำหรับ คำสั่ง SIMDและMMXซึ่งต่อมาไม่นาน MASM ก็รองรับคำสั่งเหล่านี้โดยตรง ในเวอร์ชัน 6.15 ที่วางจำหน่ายในปี 2000 Microsoft ได้ยุติการสนับสนุน MASM ในฐานะผลิตภัณฑ์แยกต่างหาก และรวมเข้ากับ ชุดเครื่องมือ Visual Studio แทน แม้ว่าจะยังคงใช้งานร่วมกับWindows 98ได้ แต่ Visual Studio เวอร์ชันปัจจุบันไม่รองรับ[ 5 ]การสนับสนุนโปรเซสเซอร์ 64 บิตไม่ได้ถูกเพิ่มเข้ามาจนกระทั่งมีการวางจำหน่ายVisual Studio 2005พร้อมกับ MASM 8.0
หลังวันที่ 25 มิถุนายน 2558 มี MASM อย่างน้อยสามเวอร์ชันที่มีหมายเลขเวอร์ชัน 14.00.23026 ใน Microsoft Visual Studio 2015 Enterprise Edition มี ml หนึ่งตัวที่เป็น "amd64_x86" และ ml64 อีกสองตัวคือ "x86_amd64" และ "amd64" ซึ่งทำงานบนแพลตฟอร์มที่แตกต่างกันและกำหนดเป้าหมายไปยังแพลตฟอร์มที่แตกต่างกัน:
- amd64_x86: สร้างโค้ด 64 บิต ทำงานในสภาพแวดล้อม Windows 32 บิต
- x86_amd64: สร้างโค้ด 32 บิต และทำงานในสภาพแวดล้อม Windows 64 บิต
- amd64: สร้างโค้ด 64 บิต และทำงานในสภาพแวดล้อม Windows 64 บิต
รูปแบบโมดูลออบเจ็กต์ที่ MASM รองรับ
MASM เวอร์ชันแรกๆ สร้างโมดูลอ็อบเจ็กต์โดยใช้ รูปแบบ OMFซึ่งใช้ในการสร้างไบนารีสำหรับMS-DOSหรือOS/ 2
ตั้งแต่เวอร์ชัน 6.1 เป็นต้นมา MASM สามารถสร้างโมดูลออบเจ็กต์ใน รูปแบบ Portable Executable [ 6 ] [ 7 ] (PE/COFF) ได้ PE/COFF เข้ากันได้กับคอมไพเลอร์ C ของ Microsoft รุ่นล่าสุด และโมดูลออบเจ็กต์ที่สร้างโดย MASM หรือคอมไพเลอร์ C สามารถผสมผสานและเชื่อมโยงเข้ากับไบนารี Win32 และ Win64 ได้เป็นประจำ
เครื่องประกอบชิ้นส่วนที่เข้ากันได้กับ MASM
โปรแกรมแอสเซมเบลอร์อื่นๆ บางโปรแกรมสามารถประกอบโค้ดส่วนใหญ่ที่เขียนขึ้นสำหรับ MASM ได้ ยกเว้นมาโครที่ซับซ้อนกว่า
- Turbo Assembler (TASM) พัฒนาโดยBorlandซึ่งต่อมาเป็นกรรมสิทธิ์ของ Embarcadero ได้รับการอัปเดตครั้งสุดท้ายในปี 2002 แต่ยังคงใช้งานร่วมกับC++BuilderและRAD Studioได้
- โปรแกรมประกอบมาโคร JWasmได้รับอนุญาตภายใต้ข้อตกลงการใช้งาน Sybase Open Watcom EULAอัปเดตครั้งล่าสุดในปี 2014
- Pelle's Macro Assembler ซึ่งเป็นส่วนประกอบหนึ่งของสภาพแวดล้อมการพัฒนาPelles C ถูกเก็บถาวรเมื่อวันที่ 29 กุมภาพันธ์ 2020 ในWayback Machine
- UASMเป็นแอสเซมเบลอร์ที่เข้ากันได้กับ MASM ซึ่งใช้งานได้ฟรี โดยอิงจาก JWasm
- ASMCเป็นโปรแกรมแอสเซมเบลอร์แบบโอเพนซอร์สที่เข้ากันได้กับ MASM ซึ่งพัฒนามาจาก JWasm
การสนับสนุนการเขียนโปรแกรมแบบผสมภาษา
เอกสารประกอบสำหรับเวอร์ชัน 5.1 ของปี 1987 รวมถึงการสนับสนุนสำหรับ " Microsoft BASIC , C, FORTRAN , Pascal " [ 8 ]
แผนกต้อนรับ
ในการตรวจสอบแอสเซมเบลอร์สามตัว Michael Blaszczak จากBYTEในเดือนกุมภาพันธ์ พ.ศ. 2532 พบว่า MASM 5.1 ช้าที่สุดและบ่นเกี่ยวกับโค้ดมากที่สุด เขาสรุปว่า "MASM ต้องใช้เวลาในการทำความคุ้นเคย แต่ก็ทำงานได้สำเร็จ" แม้จะมี "ข้อบกพร่องและความแปลกประหลาดที่น่าหงุดหงิดอยู่ไม่น้อย" [ 9 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
- โครงการ Masm32
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ไมโครซอฟต์ มาโครแอสเซมเบลอร์
Microsoft Macro Assembler ( MASM ) เป็น แอสเซมเบลอร์ x86 ที่ใช้ ไวยากรณ์ของ Intel สำหรับ MS-DOS และ Microsoft Windows ตั้งแต่ MASM เวอร์ชัน 8.
ประวัติศาสตร์
MASM เวอร์ชันแรกสุดมีอายุย้อนไปถึงปี 1981 [ 2 ] มีการจำหน่ายในรูปแบบ "Microsoft Macro Assembler" ทั่วไปสำหรับเครื่อง x86 ทั้งหมด หรือในรูปแบบ OEM สำหรับ พีซี IBM โดยเฉพาะ เมื่อถึงเวอร์ชัน 4.0 การจำหน่าย สำหรับ IBM ก็ถูกยกเลิก จนถึงเวอร์ชัน 3.
รูปแบบโมดูลออบเจ็กต์ที่ MASM รองรับ
MASM เวอร์ชันแรกๆ สร้างโมดูลอ็อบเจ็กต์โดยใช้ รูปแบบ OMF ซึ่งใช้ในการสร้างไบนารีสำหรับ MS-DOS หรือ OS/ 2
เครื่องประกอบชิ้นส่วนที่เข้ากันได้กับ MASM
โปรแกรมแอสเซมเบลอร์อื่นๆ บางโปรแกรมสามารถประกอบโค้ดส่วนใหญ่ที่เขียนขึ้นสำหรับ MASM ได้ ยกเว้นมาโครที่ซับซ้อนกว่า