ตัวประกอบแมโครของ Microsoft

ตัวประกอบแมโครของ Microsoft
นักพัฒนาไมโครซอฟต์
การเปิดตัวครั้งแรก1981 ; 43 ปีที่แล้ว ( 1981 )
การปล่อยที่มั่นคง
14.16.27023.1 / 7 มีนาคม 2560 ; 7 ปีที่แล้ว ( 07-03-2017 )
ระบบปฏิบัติการไมโครซอฟต์ วินโดว์และMS-DOS
พิมพ์ผู้ประกอบ
ใบอนุญาต ซอฟต์แวร์ที่เป็นกรรมสิทธิ์เชิงพาณิชย์
เว็บไซต์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 เป็นต้นไป จึงไม่ได้จำหน่ายเป็นผลิตภัณฑ์แยกต่างหาก แต่จะมาพร้อมกับ Microsoft SDKและคอมไพเลอร์C ต่างๆ แทน 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 ฯลฯ) แต่ก็ยังสามารถสร้างได้เฉพาะไฟล์ปฏิบัติการในโหมดจริงเท่านั้น

จนถึงเวอร์ชัน 5.0 MASM มีให้บริการในรูปแบบ แอปพลิเคชัน MS-DOSเท่านั้น เวอร์ชัน 5.1 และ 6.0 มีให้บริการทั้งแอปพลิเคชันMS-DOSและOS/2 [3]

เวอร์ชัน 6.0 เปิดตัวในปี 1991 เพิ่มพารามิเตอร์ที่ส่งผ่านด้วย "เรียกใช้" และโครงสร้างที่เหมือนระดับสูงอื่นๆ นอกเหนือจากบันทึก ที่เหมือนระดับสูงที่มีอยู่แล้ว เหนือสิ่งอื่นใด ทั้ง 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ไบนารี่ 6.11 MASM ในขณะนั้น (1993) ถูกส่งมาเป็น "bi-modal" (win32, เช่นPE ) ไบนารี่ขยาย DOS (ใช้ ส่วนขยาย Phar Lap TNT DOS) อย่างไรก็ตาม setup.exe เป็นไฟล์ปฏิบัติการ MZ ดังนั้นจะไม่ทำงานภายใต้ Windows เวอร์ชัน 64 บิต และ bi-modal ml.exe ถูกบีบอัด และ decomp.exe เป็นไฟล์ปฏิบัติการ NE ดังนั้นจึงจะไม่ทำงานเช่นกัน ภายใต้ Windows เวอร์ชัน 64 บิต (หากคุณหวังที่จะแตกไฟล์ ml.exe และ ml.err ที่จำเป็นด้วยตนเอง) ดังนั้นคุณจึงจำเป็นต้องเข้าถึง Windows 32 บิต (หรือ MSDOS) อย่างมีประสิทธิภาพเพื่อติดตั้ง เวอร์ชัน 6.11 เป็นเวอร์ชันสุดท้ายของ MASM ที่จะทำงานภายใต้ MS-DOS มีชุดของแพตช์ที่พร้อมใช้งาน จนถึงเวอร์ชัน 6.11d ซึ่งต้องใช้ Windows 32 บิตจึงจะรันได้ แต่ ml.exe ที่ได้รับแพตช์ยังคงมี Phar Lap dos extensioner ดังนั้นจึงยังสามารถทำงานภายใต้ MSDOS ได้

เวอร์ชัน 6.12 ถึง 6.14 ถูกนำมาใช้เป็นแพตช์สำหรับเวอร์ชัน 6.11 โปรแกรมแก้ไขเหล่านี้เป็นไฟล์ปฏิบัติการ PK แบบขยายตัวเอง (เช่น MSDOS) ดังนั้นจึงไม่ทำงานภายใต้ Windows 64 บิต แม้ว่าคุณจะแตกไฟล์ด้วยวิธีอื่น patch.exe นั้นเป็นไฟล์ปฏิบัติการ NE ดังนั้นจะไม่สามารถทำงานบน Windows 64 บิตเพื่ออัปเดต ml.exe ได้เช่นกัน หากคุณทำงานบน Windows 32 บิต (หรือเก่ากว่า) แพตช์จะตัดส่วนขยาย Phar Lap dos ออกจาก ml.exe ดังนั้นจึงไม่สามารถรันบน MSDOS ได้อีกต่อไป การแยก Phar Lap ทำให้ส่วน MZ ของไฟล์ปฏิบัติการมีขนาดเล็กลง เพื่อให้มองเห็นลายเซ็น "PE" ได้ง่ายขึ้น ไม่เหมือนสถานการณ์ใน 6.11 ที่ลายเซ็น PE อยู่ในไฟล์ยาว

ภายในสิ้นปี 1997 MASM รองรับWindows 95 อย่างสมบูรณ์ และรวมคำแนะนำเฉพาะของAMD ไว้ด้วย [5]

ในปี 1999 Intel ได้เปิดตัวมาโครสำหรับ คำสั่ง SIMDและMMXซึ่งหลังจากนั้นไม่นานก็ได้รับการสนับสนุนโดย MASM ด้วยการเปิดตัว 6.15 ในปี พ.ศ. 2543 Microsoft ได้ยุติการสนับสนุน MASM ในรูปแบบผลิตภัณฑ์แยกต่างหาก แทนที่จะรวมไว้ในชุดเครื่องมือVisual Studioแม้ว่าจะยังเข้ากันได้กับWindows 98แต่ Visual Studio เวอร์ชันปัจจุบันยังเข้ากันไม่ได้[5]ไม่มีการเพิ่มการรองรับโปรเซสเซอร์ 64 บิตจนกว่าจะมีการเปิดตัวVisual Studio 2005พร้อม MASM 8.0

หลังจากวันที่ 25 มิถุนายน 2015 มี MASM ที่แตกต่างกันอย่างน้อยสามรายการที่มีหมายเลขเวอร์ชัน 14.00.23026 ใน Microsoft Visual Studio 2015 Enterprise Edition มีหนึ่ง "amd64_x86" ml และสอง ml64s, "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 เข้ากันได้กับคอมไพเลอร์ Microsoft C รุ่นล่าสุด และโมดูลอ็อบเจ็กต์ที่สร้างโดย MASM หรือคอมไพเลอร์ C สามารถผสมและเชื่อมโยงเข้ากับไบนารี Win32 และ Win64 เป็นประจำ

ตัวประกอบเข้ากันได้กับ MASM

แอสเซมเบลอร์อื่นๆ บางรายสามารถประกอบโค้ดส่วนใหญ่ที่เขียนขึ้นสำหรับ MASM ได้ ยกเว้นมาโครที่ซับซ้อนกว่า

  • Turbo Assembler (TASM) พัฒนาโดย Borland ซึ่งต่อมาเป็นเจ้าของโดย Embarcadero อัปเดตครั้งล่าสุดในปี 2545 แต่ยังคงมาพร้อมกับC++ Builderและ RAD Studio
  • JWasm Macro Assembler ได้รับใบอนุญาตภายใต้ Sybase Open Watcom EULA อัปเดตล่าสุดในปี 2014
  • Macro Assembler ของ Pelle ซึ่งเป็นส่วนประกอบของ Pelles C Archived 2020-02-29 ที่สภาพแวดล้อมการพัฒนาWayback Machine
  • UASM เป็นแอสเซมเบลอร์ที่เข้ากันได้กับ MASM ฟรีซึ่งใช้ JWasm
  • ASMC เป็นแอสเซมเบลอร์ที่เข้ากันได้กับ MASM ฟรีซึ่งใช้ JWasm

รองรับการเขียนโปรแกรมภาษาผสม

เอกสารประกอบสำหรับเวอร์ชัน 5.1 ของปี 1987 รวมการรองรับ "Microsoft BASIC, C, FORTRAN, Pascal" [8]

ดูสิ่งนี้ด้วย

อ้างอิง

  1. "การพัฒนาซอฟต์แวร์ของคริส ซอว์เยอร์". www.chrissawyergames.com . สืบค้นเมื่อ2023-01-05 .
  2. วัตต์, เพ็กกี้; คริสติน แมคกีเวอร์ (7 มกราคม 1985) "Macintosh กับ IBM PC ในหนึ่งปี" อินโฟเวิลด์ . ฉบับที่ 7, ไม่. 1. น. 15–16. ไอเอสเอสเอ็น  0199-6649.IBM PC Macro Assembler เปิดตัวในเดือนธันวาคม พ.ศ. 2524
  3. มาร์แชล, มาร์ติน (29 เมษายน พ.ศ. 2534) การอัปเดต Macro Assembler เพิ่มคุณสมบัติระดับสูงอินโฟเวิลด์ . ฉบับที่ 13, ไม่ใช่. 17.น. 21. ไอเอสเอสเอ็น  0199-6649.
  4. "Q94314: รหัส MASM รุ่นหน่วยความจำแบน 32 บิตสำหรับ Windows NT" เก็บถาวรจากต้นฉบับเมื่อวันที่ 13 มกราคม 2021 . สืบค้นเมื่อ 3 ตุลาคม 2566 .
  5. ↑ ab RE ฮาร์วีย์ (2007) "ผู้ประกอบ". เก็บถาวรจากต้นฉบับเมื่อวันที่ 16 กุมภาพันธ์ พ.ศ. 2551 . สืบค้นเมื่อ 4 กุมภาพันธ์ 2553 .
  6. ^ "สำเนาที่เก็บถาวร" เก็บถาวรจากต้นฉบับเมื่อ 2009-01-26 . สืบค้นเมื่อ 24-06-2551 .{{cite web}}: CS1 maint: สำเนาที่เก็บถาวรเป็นชื่อ ( ลิงก์ )
  7. ^ "เอกสารไวท์เปเปอร์และเอกสารประกอบของ WHDC" ไมโครซอฟต์ . สืบค้นเมื่อ 25 กันยายน 2559 .
  8. ↑ Microsoft Macro Assembler 5.1, คู่มือการเขียนโปรแกรมแบบผสมภาษาพี 3.

ลิงค์ภายนอก

  • เว็บไซต์อย่างเป็นทางการ
  • โครงการ Masm32
ดึงมาจาก "https://en.wikipedia.org/w/index.php?title=Microsoft_Macro_Assembler&oldid=1216121535"