แอสเซมเบลอร์ vs คอมไพเลอร์
โดยทั่วไป คอมไพเลอร์คือโปรแกรมคอมพิวเตอร์ที่อ่านโปรแกรมที่เขียนด้วยภาษาหนึ่งซึ่งเรียกว่าภาษาต้นทางและแปลเป็นภาษาอื่นซึ่งเรียกว่าภาษาเป้าหมาย ตามเนื้อผ้า ภาษาต้นฉบับเป็นภาษาระดับสูง เช่น C++ และภาษาเป้าหมายเป็นภาษาระดับต่ำ เช่น ภาษาแอสเซมบลี อย่างไรก็ตาม มีคอมไพเลอร์ที่สามารถแปลงโปรแกรมต้นทางที่เขียนด้วยภาษาแอสเซมบลีและแปลงเป็นรหัสเครื่องหรือรหัสวัตถุได้ แอสเซมเบลอร์เป็นเครื่องมือดังกล่าว ดังนั้นทั้งแอสเซมเบลอร์และคอมไพเลอร์จึงสร้างโค้ดที่สามารถดำเนินการได้โดยตรงบนเครื่อง
คอมไพเลอร์คืออะไร
คอมไพเลอร์เป็นโปรแกรมคอมพิวเตอร์ที่อ่านโปรแกรมที่เขียนในภาษาหนึ่งซึ่งเรียกว่าภาษาต้นทางและแปลเป็นภาษาอื่นซึ่งเรียกว่าภาษาเป้าหมาย ส่วนใหญ่แล้ว ภาษาต้นฉบับเป็นภาษาระดับสูง และภาษาเป้าหมายเป็นภาษาระดับต่ำ ดังนั้นโดยทั่วไปแล้วคอมไพเลอร์สามารถเห็นได้ว่าเป็นนักแปลที่แปลจากภาษาหนึ่งเป็นอีกภาษาหนึ่ง นอกจากนี้ คอมไพเลอร์ยังทำการเพิ่มประสิทธิภาพบางอย่างให้กับโค้ดอีกด้วย คอมไพเลอร์ทั่วไปประกอบด้วยองค์ประกอบหลักหลายประการ องค์ประกอบแรกคือเครื่องสแกน (หรือที่เรียกว่าเครื่องวิเคราะห์คำศัพท์) สแกนเนอร์อ่านโปรแกรมและแปลงเป็นสตริงของโทเค็น องค์ประกอบที่สองคือ parser มันแปลงสตริงของโทเค็นเป็นแผนผังการแยกวิเคราะห์ (หรือแผนผังไวยากรณ์นามธรรม) ซึ่งรวบรวมโครงสร้างวากยสัมพันธ์ของโปรแกรม องค์ประกอบถัดไปคือรูทีนเชิงความหมายที่ตีความความหมายของโครงสร้างวากยสัมพันธ์ การเพิ่มประสิทธิภาพโค้ดและการสร้างโค้ดขั้นสุดท้ายเป็นไปตามนี้
แอสเซมเบลอร์คืออะไร
Assembler เป็นซอฟต์แวร์หรือเครื่องมือที่แปลภาษาแอสเซมบลีเป็นรหัสเครื่อง ดังนั้นแอสเซมเบลอร์จึงเป็นคอมไพเลอร์ชนิดหนึ่งและซอร์สโค้ดเขียนด้วยภาษาแอสเซมบลี แอสเซมบลีเป็นภาษาที่มนุษย์อ่านได้ แต่โดยทั่วไปแล้วจะมีความสัมพันธ์แบบหนึ่งต่อหนึ่งกับรหัสเครื่องที่เกี่ยวข้อง ดังนั้น แอสเซมเบลอร์จึงถูกกล่าวว่าทำการแปลแบบ isomorphic (การทำแผนที่แบบหนึ่งต่อหนึ่ง) แอสเซมเบลอร์ขั้นสูงมีคุณสมบัติเพิ่มเติมที่สนับสนุนการพัฒนาโปรแกรมและกระบวนการดีบัก ตัวอย่างเช่น ประเภทของแอสเซมเบลอร์ที่เรียกว่าแมโครแอสเซมเบลอร์จัดเตรียมมาโครอำนวยความสะดวก
แอสเซมเบลอร์และคอมไพเลอร์ต่างกันอย่างไร
คอมไพเลอร์เป็นโปรแกรมคอมพิวเตอร์ที่อ่านโปรแกรมที่เขียนในภาษาหนึ่งและแปลเป็นภาษาอื่น ในขณะที่แอสเซมเบลอร์ถือได้ว่าเป็นคอมไพเลอร์ชนิดพิเศษที่แปลเฉพาะภาษาแอสเซมบลีเป็นรหัสเครื่อง คอมไพเลอร์มักจะสร้างโค้ดสั่งการของเครื่องได้โดยตรงจากภาษาระดับสูง แต่แอสเซมเบลอร์จะสร้างโค้ดอ็อบเจ็กต์ซึ่งอาจต้องเชื่อมโยงโดยใช้โปรแกรมตัวเชื่อมโยงเพื่อที่จะทำงานบนเครื่องเนื่องจากภาษาแอสเซมบลีมีการแมปแบบตัวต่อตัวกับรหัสเครื่อง แอสเซมเบลอร์อาจใช้เพื่อสร้างโค้ดที่ทำงานอย่างมีประสิทธิภาพมากในโอกาสที่ประสิทธิภาพมีความสำคัญมาก (สำหรับเอ็นจิ้นกราฟิก ระบบฝังตัวที่มีทรัพยากรฮาร์ดแวร์จำกัดเมื่อเทียบกับคอมพิวเตอร์ส่วนบุคคล เช่น ไมโครเวฟ เครื่องซักผ้า เป็นต้น)