ฉันขอแนะนำให้คุณพิจารณาเป้าหมายของคุณใหม่และนี่คือเหตุผล:
ฉันเรียนรู้ภาษาแอสเซมบลี 6502 ครั้งแรกบน BBC Microcomputer (รุ่น B, 32K) มันมีการใช้งานพื้นฐานที่ยอดเยี่ยมซึ่งรวมถึงแอสเซมเบลอร์แมโคร เรามีพวกเขาที่โรงเรียนดังนั้นฉันจึงเขียนโปรแกรมซุกซนทุกประเภทที่จะทำสิ่งต่าง ๆ เช่นการจัดการบัฟเฟอร์หน้าจอโดยตรงเพื่อให้ Lemming เดินข้ามแต่ละหน้าจอรอบห้อง (พวกเขาอยู่ในเครือข่าย) หากเครื่องไม่ได้ใช้งานเป็นเวลา 10 นาที . มันส่งผลให้หัวเราะคิกคักในหมู่เพื่อนปี 7 ของฉัน
เมื่อฉันได้ Commodore 64 ที่บ้านฉันได้เรียนรู้ว่ามันมี 6510 CPU ซึ่งใช้ภาษาแอสเซมบลี 6502 ด้วย แต่ก็มีสิ่งพิเศษที่น่าสนใจ ฉันต้องซื้อแอสเซมเบลอร์ (มาพร้อมตลับ ) และเรียกใช้โปรแกรมผ่าน BASIC ด้วยวิสัยทัศน์ที่ยิ่งใหญ่ของการเขียนเกมที่ขายดีที่สุดในที่สุดฉันก็สามารถสร้างการสาธิตหลายอย่างที่ฮาร์ดแวร์การแสดงผลวิดีโอแบบสองมิติที่ลงทะเบียนเพื่อขัดจังหวะการทำเอฟเฟกต์แถบสีที่น่าสนใจ น่าประทับใจ แต่ไม่มีประโยชน์
ฉันได้ Acorn Archimedes A310 ซึ่งมีซีพียู ARM2 ดังนั้นฉันจึงใช้การใช้งาน BASIC แบบเดียวกันกับแอสเซมเบลอร์แมโครในตัวเช่นเดียวกับ BBC Micro (มรดกเดียวกัน) ฉันพยายามที่จะรวบรวมเกมสองสามเกมที่เพื่อนอาร์ทตี้จัดหากราฟิกให้รวมถึงการสาธิต trippy ที่ใช้ไซน์ ทั้งสองอย่างนี้เป็นงานที่ยากในการเขียนโปรแกรมและรหัสที่ไม่ดีอาจทำให้เครื่องเสียหายได้ (โดยไม่ได้ตั้งใจลงทะเบียนการรีเซ็ตฮาร์ดแวร์ ฯลฯ ) ทำให้สูญเสียทุกอย่างหากฉันไม่ได้บันทึก (เพื่อฟลอปปี้!)
ที่มหาวิทยาลัยฉันได้รับการแนะนำให้รู้จักกับภาษาซีพลัสพลัสและซีฉันจึงสามารถใช้มันเพื่อเขียนโปรแกรม Sun / Solaris และคอมพิวเตอร์เมนเฟรมขนาดใหญ่อื่น ๆ ฉันไม่รู้ว่าซีพียูสถาปัตยกรรมเครื่องเหล่านี้ทำงานได้อย่างไร - ฉันไม่เคยต้องการใช้แอสเซมเบลอร์หรืออ่านรหัสเครื่องเนื่องจากเครื่องมือ C ++ มอบพลังที่ฉันต้องการในการผลิตแอพพลิเคชั่นมืออาชีพ
หลังจาก Uni ฉันทำงานบน Windows และ Unix หลายรสชาติ C และ C ++ ทำงานบนเครื่องเหล่านี้ทั้งหมดและในที่สุดก็ทำ Java
ฉันทำงานบน Windows และ Dreamcast โดยใช้ C ++ กับ DirectX พร้อมด้วยโซ่เครื่องมือที่ครอบคลุมสำหรับการดีบัก
จากนั้นฉันทำงานที่ทำงานกับชิปเซ็ต ARM สำหรับสมาร์ททีวี (ในปี 2000) แม้ว่าประสบการณ์ของฉันกับ ARM2 อาจเกี่ยวข้องกันที่นี่ แต่งานนั้นเป็นพื้นฐานของ C ฉันพบว่าทุกสิ่งที่เกี่ยวกับฮาร์ดแวร์ที่ฉันทำกับอาร์คิมีดีสนั้นสามารถทำได้ใน C โดยใช้การดำเนินการ bit-twiddling ที่ตรงไปตรงมา ส่วนหนึ่งของบทบาทของฉันคือการโยกย้ายฐานรหัสไปยัง Windows, Playstation 2, Linux, ทีวีและชิปเซ็ตมือถืออื่น ๆ แพลตฟอร์มเหล่านี้ทั้งหมดมีทั้งคอมไพเลอร์ C (มักจะเป็น GCC) และระดับ API บางส่วนในการเขียนไปยังเครื่องต้นแบบ - โลกที่ฝังตัวนั้นแทบจะเป็นเคอร์เนล O / S ฉันไม่จำเป็นต้องรู้รหัสเครื่องเต็มรูปแบบสำหรับแพลตฟอร์มเฉพาะใด ๆ นอกเหนือจากการเขียนบูตโหลดเดอร์และมินิไบออสซึ่งทั้งคู่กระโดดลงไปในรหัส C ในโอกาสแรกที่มีอยู่ (หลังจากตั้งค่าเวกเตอร์ดัก
งานต่อไปคือทำงานกับ C ++, C # และ JavaScript บน Windows ไม่มีรหัสเครื่อง
งานปัจจุบันทำงานกับ C ++, JavaScript, Python, LUA, HTML และภาษาอื่น ๆ บนแพลตฟอร์มต่างๆ ฉันไม่รู้ว่าแพลตฟอร์มเหล่านี้รันโค้ดเครื่องใดและฉันไม่จำเป็นต้องรู้คอมไพเลอร์แปลโค้ดของเราเป็นสิ่งที่จำเป็นต้องมี ถ้ามันล้มเหลวฉันจะตรวจพบข้อผิดพลาดในดีบักเกอร์หรือผ่านการวินิจฉัยรันไทม์ (ข้อยกเว้นสัญญาณ ฯลฯ )
เพื่อความสนุกฉันพัฒนาแอพพลิเคชั่น iOS ในเวลาว่างที่บ้าน มันใช้ Objective-C และ API ที่ใช้งานได้กับชิปเซ็ตจำนวนมาก เห็นได้ชัดว่าพวกเขาใช้ ARM แต่ฉันไม่เคยเห็นรหัสเครื่องใด ๆ ในการพัฒนาของฉัน
ในขณะที่มันเป็นแบบฝึกหัดที่น่าสนใจในการเรียนรู้ภาษาแอสเซมบลีขณะนี้มีเครื่องมือและภาษาระดับสูงกว่ามากซึ่งช่วยให้คุณมีลำดับความสำคัญมากขึ้น (หรือสอง) มีประสิทธิภาพมากขึ้น
จำนวนของโอกาสในการทำงานที่มีให้กับโปรแกรมเมอร์ภาษาแอสเซมบลี / รหัสเครื่องน่าพิศวงเมื่อเปรียบเทียบกับ JavaScript, Java, C #, C ++ หรือ ObjC
ฉันขอแนะนำให้คุณทำให้งานอดิเรก / ผลประโยชน์ด้านข้างแทนที่จะเป็นเป้าหมายหลัก