FASM

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา
FASM
FASM.PNG
FASMD – เวอร์ชัน MS-DOS พร้อม IDE
ผู้พัฒนาTomasz Grysztar
เปิดตัวครั้งแรกมีนาคม 2543 ; 22 ปีที่แล้ว ( 2000-03 )
ปล่อยที่มั่นคง
1.73.30 [1] แก้ไขบน Wikidata / 21 กุมภาพันธ์ 2565 ; 2 เดือนที่แล้ว ( 21 กุมภาพันธ์ 2565 )
ที่เก็บ
เขียนในการประกอบ
ระบบปฏิบัติการUnix-like , Linux , Windowsและ IDE, MS-DOSและ IDE, OpenBSDฯลฯ , MenuetOS , KolibriOS , OctaOS , DexOS และ IDE, SkyOS , Solar_OS
แพลตฟอร์มx86 , x86-64
พิมพ์ผู้ประกอบ
ใบอนุญาตBSD แบบง่ายด้วยประโยคcopyleft ที่อ่อนแอ
เว็บไซต์flatassembler .net

FASM ( แอสเซม เบลอร์แบบแบน ) เป็นแอส เซม เบลอ ร์ สำหรับโปรเซสเซอร์x86 รองรับภาษาแอสเซมบลีสไตล์ Intel บนสถาปัตยกรรมคอมพิวเตอร์IA-32และx86-64 มันอ้างว่าความเร็วสูง การเพิ่มประสิทธิภาพขนาด การ พกพา ระบบปฏิบัติการ (OS) และความสามารถของมาโคร [2] [3]เป็น แอสเซม เบลอร์ระดับต่ำ[3]และจงใจใช้ตัวเลือกบรรทัดคำสั่ง น้อยมาก เป็นซอฟต์แวร์โอเพ่นซอร์สฟรี

FASM ทุกเวอร์ชันสามารถส่งออกสิ่งต่อไปนี้ได้โดยตรง: ไบนารี "ดิบ" แบบแบน (ใช้งานได้เช่นเดียวกับโปรแกรมเรียกทำงาน MS-DOS COMหรือไดรเวอร์ SYS) วัตถุ: Executable and Linkable Format (ELF) หรือCommon Object File Format (COFF) (คลาสสิก หรือเฉพาะ MS) หรือไฟล์เรียกทำงานในรูปแบบMZ , ELF หรือPortable Executable (PE) (รวมถึงไดรเวอร์ WDM อนุญาตให้ใช้ต้นขั้ว MZ DOS แบบกำหนดเอง) พอร์ตที่ไม่เป็นทางการซึ่งกำหนดเป้าหมายไปที่สถาปัตยกรรม ARM ( FASMARM ) ก็มีอยู่เช่นกัน [4]

ประวัติ

โครงการนี้เริ่มต้นขึ้นในปี 2542 โดย Tomasz Grysztar หรือที่รู้จักว่าPrivalovในขณะนั้นเป็นนักศึกษาระดับปริญญาตรีสาขาคณิตศาสตร์จากโปแลนด์ เผยแพร่สู่สาธารณะในเดือนมีนาคม พ.ศ. 2543 [5] [6] FASM เขียนด้วยภาษาแอสเซมบลี อย่างสมบูรณ์ และมาพร้อมกับแหล่งที่มาเต็มรูปแบบ เป็นself-hostingและสามารถประกอบเองได้ตั้งแต่เวอร์ชั่น 0.90 (4 พ.ค. 1999)

FASM เดิมทำงานในโหมดแบนจริง 16 บิต เพิ่มการรองรับ 32 บิตแล้วเสริมด้วยการสนับสนุนDPMI เสริม ออกแบบมาเพื่อให้ง่ายต่อการพอร์ตไปยังระบบปฏิบัติการใดๆ ที่มีการกำหนดแอดเดรส 32 บิตแบบแบน โดยถูกย้ายไปยัง Windows แล้วจึงค่อยย้ายไปยัง Linux

การออกแบบ

FASM ไม่รองรับ คำสั่ง ระดับสูงเท่าMASMหรือTASM [3]มีคุณลักษณะทางไวยากรณ์และมาโคร ซึ่งทำให้สามารถปรับแต่งหรือสร้างคำสั่งที่ขาดหายไปได้ [5]ไวยากรณ์การกำหนดที่อยู่หน่วยความจำคล้ายกับโหมดในอุดมคติของ TASM และNASM วงเล็บใช้เพื่อระบุตัวถูกดำเนินการหน่วยความจำเช่นเดียวกับแอสเซมเบลอร์ทั้งสอง แต่ขนาดจะถูกวางไว้นอกวงเล็บเช่นใน NASM [7]

FASM เป็นแอสเซมเบลอร์แบบหลายรอบ มันทำการเพิ่มประสิทธิภาพขนาดโค้ดอย่างกว้างขวางและช่วยให้สามารถอ้างอิงไปข้างหน้าได้โดยไม่มีข้อจำกัด [3] [7] โครงสร้าง FASM ที่ผิดปกติคือการกำหนดโพรซีเดอร์ก็ต่อเมื่อพวกมันถูกใช้ที่ไหนสักแห่งในโค้ด บางสิ่งในภาษาส่วนใหญ่นั้นถูกทำต่ออ็อบเจ็กต์โดยตัว เชื่อมโยง

FASM ยึดตามหลักการ "แหล่งเดียวกัน เอาต์พุตเดียวกัน": เนื้อหาของไฟล์ผลลัพธ์จะไม่ได้รับผลกระทบจากบรรทัดคำสั่ง [7]วิธีการดังกล่าวช่วยประหยัดแหล่งที่มาของ FASM จากการรวบรวมปัญหาที่มักนำเสนอในโครงการประกอบจำนวนมาก ในทางกลับกัน การดูแลรักษาโปรเจ็กต์ที่ประกอบด้วยไฟล์ต้นฉบับที่คอมไพล์แยกกันหลายๆ ไฟล์หรือโปรเจ็กต์ภาษาผสมทำให้ยากขึ้น อย่างไรก็ตาม มีตัวห่อหุ้ม Win32 ที่ เรียกว่า FA ซึ่งช่วยลดปัญหานี้ได้ [8]โปรเจ็กต์ FASM สามารถสร้างจากไฟล์ต้นฉบับไฟล์เดียวลงในไฟล์สั่งการได้โดยตรงโดยไม่ต้องมีสเตจเชื่อมโยง [3]

ไอดี

Freshซึ่งเป็นโครงการสนับสนุนชุมชนอินเทอร์เน็ตที่เริ่มต้นโดย John Found เป็นสภาพแวดล้อมการพัฒนาแบบบูรณาการสำหรับ FASM [9] ปัจจุบัน Fresh รองรับ Microsoft Windows และ Linux [9]

ใช้

ระบบปฏิบัติการที่เขียนด้วย FASM:

คอมไพเลอร์ที่ใช้ FASM เป็นแบ็กเอนด์:

ดูเพิ่มเติม

อ้างอิง

  1. ^ http://flatassembler.net/download.php _
  2. โทมัสซ์ กรีซตาร์. "คู่มือโปรแกรมเมอร์ Flat Assembler" . สืบค้นเมื่อ2008-05-12 .
  3. อรรถเป็น c d อี แรนดัลล์ ไฮด์ "แอสเซมเบลอร์ตัวไหนดีที่สุด" . สืบค้นเมื่อ2008-05-18 .
  4. ^ "ฟาสมาร์ม" . 2008-03-20 . สืบค้นเมื่อ2008-05-12 .
  5. ^ a b "สัมภาษณ์ Privalov ผู้เขียน FASM" . 2547-08-12. เก็บถาวรจากต้นฉบับเมื่อ 2007-10-08 . สืบค้นเมื่อ2008-05-12 .
  6. โทมัสซ์ กรีซตาร์ (2000-03-15). "เครื่องประกอบแบบแบน" . ดึงข้อมูล2008-05-19 .
  7. ↑ a b c Tomasz Grysztar . "หลักการออกแบบเครื่องประกอบแบบแบน" . สืบค้นเมื่อ2008-05-12 .
  8. โทมัสซ์ กรีซตาร์. "FA – ส่วนขยายบรรทัดคำสั่งสำหรับ fasm " สืบค้นเมื่อ2012-05-11 .
  9. ^ a b "โครงการ ID สด" .
  10. ^ "เมนู OS" . สืบค้นเมื่อ2008-05-18 .

ลิงค์ภายนอก