กลับไปหน้าบทความ

อ่าน 3 นาที

เน็ตไวด์แอสเซมเบลอร์

Netwide Assembler ( NASM ) เป็น แอสเซมเบลอร์ และ ดีแอสเซมเบลอร์ สำหรับ สถาปัตยกรรม Intel x86 สามารถใช้เขียน โปรแกรม 16 บิต 32 บิต ( IA-32 ) และ 64 บิต ( x86-64 ) ได้...

เน็ตไวด์แอสเซมเบลอร์

นาสม์
ผู้เขียนต้นฉบับไซมอน ทาแธม , จูเลียน ฮอลล์
นักพัฒนาเอช. ปีเตอร์ อันวิน , ชาง ซอก เบ , จิม คูคูนัส , แฟรงค์ บี. คอตเลอร์ , ไซริล กอร์คูนอฟ
ปล่อยตุลาคม พ.ศ. 2539 ( 1996-10 )
เวอร์ชันเสถียร
3.01 [ 1 ] แก้ไขข้อมูลนี้บนวิกิดาต้า / 11 ตุลาคม 2025 ( 11 ตุลาคม 2568 )
เขียนเป็นการประกอบ , C [ 2 ]
ระบบปฏิบัติการระบบปฏิบัติการแบบ Unix , Windows , OS/2 , MS-DOS
มีจำหน่ายในภาษาอังกฤษ
พิมพ์แอสเซมเบลอร์x86
ใบอนุญาตเงื่อนไข BSD 2
เว็บไซต์nasm.us
ที่เก็บข้อมูล
  • github .com /netwide-assembler /nasm

Netwide Assembler ( NASM ) เป็นแอสเซมเบลอร์และดีแอสเซมเบลอร์สำหรับ สถาปัตยกรรม Intel x86สามารถใช้เขียน โปรแกรม 16 บิต 32 บิต ( IA-32 ) และ64 บิต ( x86-64 ) ได้ ถือเป็นหนึ่งในแอสเซมเบลอร์ที่ได้รับความนิยมมากที่สุดสำหรับLinuxและชิป x86 [ 3 ]

เดิมทีเขียนโดยSimon Tathamโดยได้รับความช่วยเหลือจาก Julian Hall ณ ปี 2016 ทีมงานขนาดเล็กที่นำโดยH. Peter Anvin เป็นผู้ ดูแล[ 4 ]เป็นซอฟต์แวร์โอเพนซอร์สที่เผยแพร่ภายใต้เงื่อนไขของใบอนุญาต BSDแบบ ง่าย (2 ข้อ) [ 5 ]

คุณสมบัติ

NASM สามารถส่งออกรูปแบบไบนารีได้หลายรูปแบบ รวมถึงCOFF , OMF, a.out , Executable and Linkable Format (ELF), Mach-Oและไฟล์ไบนารี (.bin, อิมเมจดิสก์ไบนารี ซึ่งใช้ในการคอมไพล์ระบบปฏิบัติการ ) แม้ว่าโค้ดที่ไม่ขึ้นกับตำแหน่งจะรองรับเฉพาะไฟล์ออบเจ็กต์ ELF เท่านั้น นอกจากนี้ยังมีรูปแบบไบนารีของตัวเองที่เรียกว่า RDOFF [ 6 ]

รูปแบบเอาต์พุตที่หลากหลายช่วยให้สามารถ กำหนดเป้าหมายโปรแกรม ใหม่ไปยังระบบปฏิบัติการ x86 (OS) แทบทุกระบบได้ นอกจากนี้ยังสามารถสร้างไฟล์ไบนารีแบบแบนราบซึ่งใช้ในการเขียนบูตโหลดเดอร์รูปภาพหน่วยความจำแบบอ่านอย่างเดียว (ROM) และในด้านต่างๆ ของการพัฒนาระบบปฏิบัติการ[ 6 ]มันสามารถทำงานบนแพลตฟอร์มที่ไม่ใช่ x86 (หาก NASM ได้รับการคอมไพล์สำหรับแพลตฟอร์มนั้น) ในฐานะแอสเซมเบลอร์แบบครอ ส เช่นPowerPCและSPARCแม้ว่าจะไม่สามารถสร้างโปรแกรมที่เครื่องเหล่านั้นสามารถใช้งานได้ก็ตาม

NASM ใช้ไวยากรณ์การประกอบ Intel เวอร์ชัน หนึ่ง แทนไวยากรณ์AT&T [ 7 ]นอกจากนี้ยังหลีกเลี่ยงคุณสมบัติต่างๆ เช่น การสร้างการแทนที่เซกเมนต์โดยอัตโนมัติ (และคำสั่ง ASSUME ที่เกี่ยวข้อง) ที่ใช้โดยMASMและแอสเซมเบลอร์ที่เข้ากันได้[ 6 ]

การพัฒนา

NASM เวอร์ชัน 0.90 ออกวางจำหน่ายในเดือนตุลาคม พ.ศ. 2539 [ 5 ]

เวอร์ชัน 2.00 ได้รับการเผยแพร่เมื่อวันที่ 28 พฤศจิกายน 2550 โดยเพิ่มการสนับสนุนส่วนขยายx86-64 [ 4 ]เวอร์ชันการพัฒนาไม่ได้ถูกอัปโหลดไปยังSourceForge.netแต่ถูกตรวจสอบในGitHubโดยมีสแนปช็อตไบนารี่ให้ใช้งานได้จากหน้าเว็บโครงการ

ในเดือนกรกฎาคม พ.ศ. 2552 ในเวอร์ชัน 2.07 NASM ได้ถูกเผยแพร่ภายใต้ใบอนุญาต BSD แบบง่าย (2 ข้อ) ก่อนหน้านี้ เนื่องจากได้รับอนุญาตภายใต้LGPLจึงนำไปสู่การพัฒนา Yasm ซึ่งเป็นการเขียนใหม่ทั้งหมดภายใต้ใบอนุญาต BSD ใหม่ Yasm ให้การสนับสนุนสถาปัตยกรรม x86-64 ก่อน NASM นอกจากนี้ยังเพิ่มการสนับสนุนไวยากรณ์ ของ GNU Assembler ด้วย

อาร์ดอฟฟ์

รูปแบบไฟล์ออบเจ็กต์ไดนามิกที่เคลื่อนย้ายได้ (RDOFF) ถูกใช้โดยนักพัฒนาเพื่อทดสอบความสมบูรณ์ของความสามารถในการส่งออกไฟล์ออบเจ็กต์ของ NASM โดยอาศัยโครงสร้างภายในของ NASM เป็นหลัก[ 8 ]ซึ่งโดยพื้นฐานแล้วประกอบด้วยส่วนหัวที่มีการเรียงลำดับการเรียกฟังก์ชันไดรเวอร์เอาต์พุต ตามด้วยอาร์เรย์ของส่วนต่างๆ ที่มีโค้ดหรือข้อมูลที่สามารถเรียกใช้งานได้ เครื่องมือสำหรับการใช้รูปแบบนี้ รวมถึงตัวเชื่อมโยงและตัวโหลด จะรวมอยู่ในชุดการแจกจ่าย NASM

จนกระทั่งมีการเปิดตัวเวอร์ชัน 0.90 ในเดือนตุลาคม พ.ศ. 2539 NASM รองรับเฉพาะการส่งออกไฟล์ปฏิบัติการแบบรูปแบบแบน (เช่นไฟล์ COM ) เท่านั้น ในเวอร์ชัน 0.90 Simon Tathamได้เพิ่มการสนับสนุนอินเทอร์เฟซการส่งออกไฟล์ออบเจ็กต์ และสำหรับไฟล์ .OBJ ของ DOS สำหรับโค้ด 16 บิตเท่านั้น[ 9 ]

ดังนั้น NASM จึงขาดรูปแบบออบเจ็กต์ 32 บิต เพื่อแก้ไขปัญหานี้ และเพื่อเป็นการฝึกฝนการเรียนรู้อินเทอร์เฟซไฟล์ออบเจ็กต์ นักพัฒนา Julian Hall จึงได้รวบรวม RDOFF เวอร์ชันแรก ซึ่งเผยแพร่ใน NASM เวอร์ชัน 0.91 [ 9 ]

นับตั้งแต่เวอร์ชันเริ่มต้นนี้ มีการอัปเดตรูปแบบ RDOFF ครั้งใหญ่หนึ่งครั้ง ซึ่งเพิ่มตัวบ่งชี้ความยาวเรคอร์ดในเรคอร์ดส่วนหัวแต่ละรายการ[ 10 ]ทำให้โปรแกรมสามารถข้ามเรคอร์ดที่รูปแบบไม่คุ้นเคยได้ และรองรับเซกเมนต์หลายส่วน RDOFF1 รองรับเพียงสามเซกเมนต์ ได้แก่text , dataและbss (ซึ่งมีข้อมูลที่ไม่ได้เริ่มต้น) [ 8 ]

รูปแบบ RDOFF ถือว่าล้าสมัยอย่างมากและถูกปิดใช้งานตั้งแต่ NASM 2.15.04 เป็นต้นไป[ 11 ]

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • เจฟฟ์ ดันเทมันน์ (2000). ภาษาแอสเซมบลีทีละขั้นตอน . เจ. ไวลีย์ แอนด์ ซันส์. ISBN 0-471-37523-3.
  • เว็บไซต์อย่างเป็นทางการ
  • Netwide AssemblerบนSourceForge
  • รุ่นพิเศษสำหรับ Win32 และ BeOS
  • การเปรียบเทียบ GAS และ NASMที่IBM
  • "Netwide Assembler" . Freecode .: ตัวแปลงระหว่างรูปแบบซอร์สโค้ดของแอสเซมเบลอร์ NASM และGAS
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Netwide_Assembler&oldid=1358678304 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เน็ตไวด์แอสเซมเบลอร์

Netwide Assembler ( NASM ) เป็น แอสเซมเบลอร์ และ ดีแอสเซมเบลอร์ สำหรับ สถาปัตยกรรม Intel x86 สามารถใช้เขียน โปรแกรม 16 บิต 32 บิต ( IA-32 ) และ 64 บิต ( x86-64 ) ได้...

คุณสมบัติ

NASM สามารถส่งออกรูปแบบไบนารีได้หลายรูปแบบ รวมถึง COFF , OMF, a.out , Executable and Linkable Format (ELF), Mach-O และ ไฟล์ไบนารี (.

การพัฒนา

NASM เวอร์ชัน 0.90 ออกวางจำหน่ายในเดือนตุลาคม พ.ศ. 2539 [ 5 ]

อาร์ดอฟฟ์

รูปแบบไฟล์ออบเจ็กต์ไดนามิกที่เคลื่อนย้ายได้ (RDOFF) ถูกใช้โดยนักพัฒนาเพื่อทดสอบความสมบูรณ์ของความสามารถในการส่งออกไฟล์ออบเจ็กต์ของ NASM โดยอาศัยโครงสร้างภายในของ NASM เป็นหลัก [ 8 ] ซึ่งโดยพื้นฐานแล้วประกอบด้วยส่วนหัวที่มี การเรียงลำดับ...