Saya sangat menyarankan agar Anda mempertimbangkan kembali tujuan Anda dan inilah alasannya:
Saya pertama kali belajar 6502 Bahasa Perakitan di BBC Microcomputer (Model B, 32K). Itu memiliki implementasi BASIC luar biasa yang mencakup assembler makro. Kami memilikinya di sekolah, jadi saya menulis semua jenis program nakal yang akan melakukan hal-hal seperti manipulasi buffer layar langsung untuk membuat Lemming berjalan di setiap layar, di sekitar ruangan (mereka terhubung jaringan) jika mesin tidak digunakan selama 10 menit . Itu menghasilkan cekikikan di antara teman-teman kelas 7 saya.
Ketika saya mendapatkan Commodore 64 di rumah, saya mengetahui bahwa ia memiliki CPU 6510 yang juga menjalankan 6502 bahasa assembly tetapi dengan beberapa tambahan yang menarik. Saya harus membeli assembler (menggunakan cartridge ) dan menjalankan program melalui BASIC. Dengan visi besar menulis game terlaris, saya akhirnya berhasil membuat beberapa demo yang register perangkat keras tampilan video sedikit-bengkok pada interrupt untuk melakukan efek bar warna yang menarik yang dianimasikan ke musik chip yang funky. Mengesankan, tapi tidak terlalu berguna.
Saya kemudian mendapatkan Acorn Archimedes A310 yang memiliki CPU ARM2 jadi saya menggunakan implementasi BASIC yang sama mengagumkannya dengan assembler makro bawaan seperti Micro Mikro (warisan yang sama). Saya berhasil menyusun beberapa permainan yang disediakan teman arty untuk grafis, ditambah beberapa demo trippy berbasis sinusoid. Kedua hal ini merupakan kerja keras untuk diprogram dan kode yang buruk dapat menurunkan mesin (secara tidak sengaja trip register reset perangkat keras, dll), kehilangan segalanya jika saya tidak menyimpan (ke disket!).
Di Universitas saya diperkenalkan ke C ++ dan karenanya C. Saya bisa menggunakannya untuk memprogram Sun / Solaris dan beberapa komputer mainframe besar lainnya. Saya tidak tahu apa arsitektur CPU mesin ini berjalan - saya tidak pernah perlu menggunakan assembler atau membaca kode mesin karena alat C ++ memberi saya kekuatan yang saya butuhkan untuk menghasilkan aplikasi profesional.
Setelah Uni, saya bekerja pada Windows dan beberapa rasa Unix. C dan C ++ bekerja pada semua mesin ini dan akhirnya Java juga melakukannya.
Saya kemudian bekerja pada Windows dan Dreamcast menggunakan C ++ dengan DirectX dengan rantai alat komprehensif untuk debugging.
Saya kemudian bekerja dengan chipset berbasis ARM untuk Smart TV (pada tahun 2000). Meskipun pengalaman saya dengan ARM2 mungkin relevan di sini, pekerjaan itu berbasis C. Saya menemukan bahwa semua masalah dengan perangkat keras yang saya lakukan pada Archimedes juga dapat dilakukan di C menggunakan operasi bit-twiddling langsung. Bagian dari peran saya adalah untuk memigrasi basis kode ke Windows, Playstation 2, Linux, TV dan chipset seluler lainnya. Semua platform ini tersedia dengan kompiler C (seringkali GCC) dan beberapa tingkat API untuk ditulis ke mesin yang mendasarinya - dunia yang disematkan jarang merupakan kernel O / S. Saya tidak pernah perlu mengetahui kode mesin lengkap untuk platform tertentu selain menulis boot loader dan mini-BIOS, yang keduanya melompat ke dalam kode C pada kesempatan pertama yang tersedia (setelah mengatur vektor perangkap,
Pekerjaan selanjutnya adalah bekerja dengan C ++, C # dan JavaScript pada Windows. Tidak ada kode mesin.
Pekerjaan saat ini bekerja dengan C ++, JavaScript, Python, LUA, HTML dan bahasa lainnya di berbagai platform. Saya tidak tahu kode mesin apa yang dijalankan platform ini, saya juga tidak perlu tahu - kompiler menerjemahkan kode kami menjadi apa pun yang diperlukan. Jika crash, saya menangkap kesalahan dalam debugger atau melalui diagnostik runtime (pengecualian, sinyal, dll).
Untuk bersenang-senang, saya mengembangkan aplikasi iOS pada waktu luang yang saya miliki di rumah. Ini menggunakan Objective-C dan API yang bekerja di beberapa chipset. Rupanya mereka berbasis ARM, tetapi saya belum pernah melihat kode mesin dalam pengembangan saya.
Meskipun ini merupakan latihan yang menarik untuk mempelajari bahasa rakitan, sekarang ada banyak alat dan bahasa tingkat lebih tinggi yang memungkinkan Anda menjadi urutan-besarnya (atau dua) lebih produktif.
Jumlah peluang kerja yang tersedia untuk programmer bahasa assembly / kode mesin yang menakjubkan sangat kecil dibandingkan dengan sesuatu seperti JavaScript, Java, C #, C ++ atau ObjC.
Saya menyarankan Anda menjadikan ini hobi / minat sampingan daripada tujuan utama.