ฉันมีรูทีนแอสเซมเบลอร์สามหรือสี่รายการ (ในซอร์สประมาณ 20 MB) ในแหล่งที่มาในที่ทำงาน ทั้งหมดนี้เป็นSSE (2)และเกี่ยวข้องกับการดำเนินการบน (ค่อนข้างใหญ่ - คิดว่า 2400x2048 ขึ้นไป)
สำหรับงานอดิเรกฉันทำงานกับคอมไพเลอร์และคุณมีแอสเซมเบลอร์เพิ่มขึ้น ไลบรารีรันไทม์มักจะเต็มไปหมดส่วนใหญ่เกี่ยวข้องกับสิ่งที่ท้าทายระบบการดำเนินการตามปกติ (เช่นตัวช่วยสำหรับข้อยกเว้นเป็นต้น)
ฉันไม่มีแอสเซมเบลอร์สำหรับไมโครคอนโทรลเลอร์ของฉัน ไมโครคอนโทรลเลอร์ที่ทันสมัยส่วนใหญ่มีฮาร์ดแวร์อุปกรณ์ต่อพ่วงจำนวนมาก (ขัดจังหวะตัวนับที่ควบคุมแม้กระทั่งตัวเข้ารหัสพื้นที่สี่เหลี่ยมจัตุรัสทั้งหมดและหน่วยการสร้างแบบอนุกรม) ซึ่งการใช้แอสเซมเบลอร์เพื่อปรับลูปให้เหมาะสมมักไม่จำเป็นอีกต่อไป ด้วยราคาแฟลชในปัจจุบันเช่นเดียวกับหน่วยความจำรหัส นอกจากนี้มักจะมีอุปกรณ์ที่เข้ากันได้กับพินอยู่หลายช่วงดังนั้นการลดขนาดหากคุณใช้พลังงานซีพียูหรือพื้นที่แฟลชหมดอย่างเป็นระบบมักจะไม่เป็นปัญหา
หากคุณไม่ได้จัดส่งอุปกรณ์และแอสเซมเบลอร์การเขียนโปรแกรมกว่า 100000 ชิ้นทำให้สามารถประหยัดได้มากโดยเพียงแค่ติดตั้งชิปแฟลชในหมวดหมู่ที่เล็กลง แต่ฉันไม่ได้อยู่ในประเภทนั้น
หลายคนคิดว่าการฝังตัวเป็นข้ออ้างสำหรับแอสเซมเบลอร์ แต่คอนโทรลเลอร์ของพวกเขามีพลังงาน CPU มากกว่าเครื่องที่Unixได้รับการพัฒนา (ไมโครชิพมาพร้อมกับไมโครคอนโทรลเลอร์ 40 และ 60 MIPSสำหรับภายใต้ 10 เหรียญสหรัฐ )
อย่างไรก็ตามผู้คนจำนวนมากติดอยู่กับมรดกตกทอดเนื่องจากการเปลี่ยนสถาปัตยกรรมไมโครชิปไม่ใช่เรื่องง่าย นอกจากนี้โค้ด HLL ยังขึ้นอยู่กับสถาปัตยกรรมเป็นอย่างมาก (เนื่องจากใช้อุปกรณ์ต่อพ่วงฮาร์ดแวร์รีจิสเตอร์เพื่อควบคุม I / O ฯลฯ ) ดังนั้นจึงมีเหตุผลที่ดีในการดูแลโครงการในแอสเซมเบลอร์ต่อไป (ฉันโชคดีที่สามารถตั้งค่ากิจการบนสถาปัตยกรรมใหม่ตั้งแต่เริ่มต้น) แต่บ่อยครั้งที่ผู้คนมักคิดว่าพวกเขาต้องการผู้ประกอบ
ฉันยังคงชอบคำตอบที่ศาสตราจารย์ให้ไว้เมื่อเราถามว่าเราสามารถใช้ GOTO ได้หรือไม่ (แต่คุณสามารถอ่านเป็น ASSEMBLER ได้เช่นกัน): "ถ้าคุณคิดว่ามันคุ้มค่าที่จะเขียนเรียงความ 3 หน้าว่าทำไมคุณถึงต้องการฟีเจอร์นี้คุณสามารถใช้ได้ . กรุณาส่งเรียงความพร้อมผลลัพธ์ของคุณ "
ฉันใช้สิ่งนั้นเป็นแนวทางสำหรับคุณสมบัติระดับต่ำ อย่าคับแคบเกินไปที่จะใช้มัน แต่ให้แน่ใจว่าคุณกระตุ้นมันอย่างเหมาะสม แม้กระทั่งโยนสิ่งกีดขวางเทียมหรือสองอัน (เช่นเรียงความ) เพื่อหลีกเลี่ยงการใช้เหตุผลที่ซับซ้อนเป็นเหตุผล