Jika Anda tidak memutuskan untuk belajar sedikit assembler, Anda mungkin harus belajar sesuatu seperti 6502 assembler pada Commodore 64 (ditiru, tentu saja), atau 68000 pada Amiga.
Anda dapat mengetahui tentang Commodore 64 di sini ...
http://thepiratebay.org/torrent/4609238/Tag3-Saal2-Slot16_00--ID2874-the_ultimate_commodore_64_talk-Main
Buku klasik segalanya yang perlu Anda ketahui adalah yang dijelaskan di sini ...
http://reprog.wordpress.com/2010/03/12/programming-books-part-3-programming-the-omodore-64/
Anda mungkin dapat menemukan pemindaian PDF jika Anda melihat-lihat.
IMO, 6502 lebih mudah dari Z80, dan 68000 lebih mudah dari 8086 - set instruksi yang lebih teratur dll.
Tetapi CPU hanya satu aspek dari perangkat keras. Juga, CPU modern adalah binatang yang sangat berbeda, dan ia melakukan hal-hal yang transparan bahkan dari sudut pandang kompiler - seperti menghadirkan ruang alamat virtual.
Keuntungan khusus dari 6502 pada C64 adalah bahwa tidak hanya CPU yang sederhana, tetapi ada beberapa yang sangat mudah untuk diretas juga. Saya dulu sangat senang bermain-main dengan chip musik SID.
Jadi - ini mungkin latihan yang bermanfaat jika Anda tidak menghabiskan terlalu banyak waktu untuk itu. Saya belajar 6502 assembler sebagai bahasa kedua saya ketika saya berusia sekitar 14 tahun, tepat setelah Commodore Basic. Tetapi sebagian besar mendapatkan model kerja yang sangat sederhana sehingga Anda dapat menambahkan ide-ide yang lebih canggih dengan minimal kesalahpahaman.
Beberapa hal berguna yang dapat Anda pelajari saat bekerja di assembler ...
- Cara register CPU bekerja.
- Cara kerja pengalamatan memori, termasuk tipuan.
- Cara kerja tumpukan CPU.
- Cara kerja logika bitwise.
- Bagaimana CPU mengontrol perangkat I / O.
- Bagaimana interupsi bekerja.
Satu alasan khusus yang saya sarankan adalah untuk mendapatkan intuisi yang lebih baik tentang cara langkah-langkah sederhana beroperasi sepenuhnya secara deterministik dan mekanis dan sepenuhnya tanpa kecerdasan atau akal sehat. Pada dasarnya membiasakan diri dengan model eksekusi imperatif dalam bentuknya yang paling murni dan keras kepala.
Namun, betapa bermanfaatnya mengetahui sebagian besar dari hal-hal itu sekarang, merupakan pertanyaan yang sulit.
Satu hal yang tidak akan Anda pelajari adalah bagaimana bermain dengan baik dengan hirarki memori. Mesin-mesin lama sebagian besar memiliki model memori sederhana tanpa lapisan cache dan tidak ada memori virtual. Anda juga tidak akan belajar banyak tentang konkurensi - mereka memang cara untuk mengatasinya, tetapi itu sebagian besar berarti gangguan. Anda tidak perlu khawatir tentang mutexes dll.
Terkadang, model mental tentang bagaimana hal-hal ini pernah bekerja, atau tentang bagaimana assembler bekerja, bahkan dapat menyesatkan. Misalnya, memikirkan pointer C sebagai alamat dapat menyebabkan masalah perilaku yang tidak ditentukan. AC pointer biasanya diimplementasikan sebagai integer yang berisi alamat, tetapi tidak ada jaminan bahwa itu sepenuhnya benar. Misalnya, pada beberapa platform aneh, pointer yang berbeda dapat menunjuk ke ruang alamat yang berbeda. Ini menjadi penting ketika Anda ingin melakukan aritmatika atau logika bitwise dengan dua petunjuk.
Kecuali Anda memiliki salah satu dari platform aneh itu, Anda mungkin tidak berpikir Anda peduli tentang itu - tetapi para kompiler hari ini lebih dan lebih cenderung mengeksploitasi perilaku standar yang tidak ditentukan untuk optimasi.
Jadi model mental arsitektur sistem dapat berguna, tetapi masih penting untuk kode ke spesifikasi bahasa., Bukan untuk model hipotetis yang mungkin tidak dihormati oleh bahasa dan platform Anda.
Akhirnya, banyak hal mental model yang berguna datang dari mendapatkan ide tentang bagaimana kompiler menghasilkan kode - dan pembuatan kode untuk bahasa modern sangat berbeda dari kompiler yang cukup sepele yang tersedia saat itu.
Ini adalah buku favorit saya untuk itu ...
http://dickgrune.com/Books/MCD_1st_Edition/
Seiring dengan hal-hal tentang parsing dan AST dll, itu mencakup pembuatan kode untuk berbagai paradigma bahasa - imperatif, OOP, fungsional, logika, paralel dan didistribusikan - dan juga untuk manajemen memori. Jika Anda ingin tahu bagaimana panggilan metode polimorfik bekerja tanpa terjebak dalam detail set instruksi CPU, buku seperti ini adalah teman Anda - dan ada edisi baru yang segera keluar.