Eğer varsa do assembler biraz öğrenmeye karar, muhtemelen (tabii ki taklit) bir Commodore 64 6502 assembler gibi bir şey öğrenmek veya bir Amiga 68000 olmalıdır.
Commodore 64 hakkında bir fikir edinebilirsiniz ...
http://thepiratebay.org/torrent/4609238/Tag3-Saal2-Slot16_00--ID2874-the_ultimate_commodore_64_talk-Main
Bilmeniz gereken klasik kitap, burada açıklanan kitaptır.
http://reprog.wordpress.com/2010/03/12/programming-books-part-3-programming-the-commodore-64/
Etrafınıza bakarsanız muhtemelen bir PDF taraması bulabilirsiniz.
IMO, 6502, Z80'den ve 68000, 8086'dan daha kolaydır - daha düzenli komut setleri vb.
Ancak CPU, donanımın sadece bir yönüdür. Ayrıca, modern bir CPU muazzam derecede farklı bir canavardır ve sanal bir adres alanı sunmak gibi derleyiciler açısından bile şeffaf olan şeyler yapar.
6502'nin C64'teki özel bir avantajı yalnızca CPU'nun basit olması değil, aynı zamanda donanıma takılması da oldukça basit. SID müzik çipiyle oynamayı çok severdim.
Yani - çok fazla zaman harcamak yoksa muhtemelen değerli bir egzersiz. Commodore Basic'ten hemen sonra 14 yaşındayken ikinci dilim olarak 6502 assembler'ı öğrendim. Fakat çoğunlukla o kadar basit bir çalışma modeli elde ediyor ki, en az yanlış anlaşılma ile daha karmaşık fikirler ekleyebiliyorsunuz.
Assembler'da çalışmayı öğrenebileceğiniz bazı yararlı şeyler ...
- CPU kayıtları nasıl çalışır?
- Hafıza adresleme, dolaylı aktarma dahil olmak üzere nasıl çalışır?
- CPU yığını nasıl çalışır?
- Bitsel mantık nasıl çalışır?
- CPU, G / Ç cihazlarını nasıl kontrol eder.
- İş kesintileri nasıl yapılır?
Bunu tavsiye etmemin özel bir nedeni, basit adımların istihbarat veya sağduyu olmadan tamamen belirleyici, mekanik ve tamamen işleyiş şeklinin daha iyi anlaşılmasıdır. Temel olarak emir yürütme modeline en saf ve en inatçı cahil formunda alışmak.
Kesinlikle nasıl şimdi şeylerden en bilmektir yararlı olsa da, zor bir sorudur.
Öğrenmeyeceğiniz bir şey, bir hatıra hafızasıyla nasıl iyi oynayacağınızdır. Bu eski makineler çoğunlukla önbellek katmanı ve sanal bellek içermeyen basit bir bellek modeline sahipti. Aynı zamanda eşzamanlılık hakkında da pek bir şey öğrenemezsiniz - kesinlikle bununla baş etmenin yolu onlardı, ama bu çoğunlukla kesintiler anlamına geliyordu. Muteksler vb. İçin endişelenmenize gerek yoktu.
Bazen, bir zamanlar bu şeylerin nasıl çalıştığının ya da assembler'ın nasıl çalıştığının zihinsel bir modeli bile yanıltıcı olabilir. Örneğin, bir C işaretçisini bir adres olarak düşünmek tanımsız davranış sorunlarına yol açabilir. AC işaretçisi normalde bir adres içeren bir tamsayı olarak uygulanır, ancak bunun kesinlikle doğru olduğu garantisi yoktur. Örneğin, bazı tuhaf platformlarda, farklı işaretçiler farklı adres alanlarına işaret edebilir. İki işaretleyiciyle aritmetik veya bitsel mantık yapmak istediğinizde bu önemli hale gelir.
Bu tuhaf platformlardan birine sahip olmadığınız sürece, bunu umursamayacağınızı düşünebilirsiniz - ancak bu günlerde derleyicilerin optimizasyon için standartların tanımsız davranışlarından yararlanma olasılığı daha fazladır.
Dolayısıyla, sistem mimarisinin zihinsel bir modeli faydalı olabilir, ancak dilinizin ve platformunuzun saygı duymayacağı varsayımsal bir model için değil, dilin özelliklerine kodlama yapmak hala önemlidir.
Son olarak, birçok faydalı zihinsel model, derleyicilerin nasıl kod ürettiği hakkında bir fikir edinmekten kaynaklanır - ve modern diller için kod oluşturma, o zamanki oldukça önemsiz derleyicilerden çok farklıdır.
Bu benim için en sevdiğim kitap.
http://dickgrune.com/Books/MCD_1st_Edition/
Ayrıştırma ve AST'ler vb. İle ilgili şeylerin yanı sıra, bir dizi dil paradigması için - kodlama, OOP, fonksiyonel, mantık, paralel ve dağıtılmış - ve ayrıca bellek yönetimi için kod üretmeyi de kapsar. Polimorfik yöntemin nasıl çağırıldığını CPU komut seti ayrıntılarına boğmadan nasıl çalıştığını bilmek istiyorsanız, bunun gibi bir kitap arkadaşınızdır - ve yakında çıkacak yeni bir baskı var.