Kip Irvine'in kitabından öğrendim . Onun (alakasız) kütüphanelerinin (adil) eleştirilerini görmezden gelirseniz, bunu dilin kendisine iyi bir giriş olarak önerebilirim - ancak gerçekten ilginç şeyler için internette takıntılıları avlamanız gerekir.
Alt seviyelerde ne olduğunu anlamanın yararlı olduğunu düşünüyorum. Derleyiciyi araştırırken, cpu boru hattı oluşturma, dal tahmini, önbellek hizalama, SIMD, talimat yeniden sıralama vb. Hakkında bilgi edineceksiniz. Bunların bilgisi, daha iyi yüksek seviye kod yazmanıza yardımcı olacaktır.
Dahası, geleneksel akıl, çoğu zaman montajı elle optimize etmeye çalışmak değil, derleyicinin bu konuda endişelenmesine izin vermektir. Derleyicilerin ürettiği çarpık şeylerin bazı örneklerini gördüğünüzde, geleneksel bilgeliğin neden geçerli olduğunu daha iyi anlayacaksınız.
Örnek: LFSR'ler, taşıma ile döndür komutuyla hızlı çalışır, bunun gibi belirli durumlarda, derleyicinin anlamaya yetecek kadar akıllı olup olmadığını keşfetmek kadar assembler sürümünü yazmak kadar kolaydır. Bazen derleyicinin bilmediği bir şeyi bilirsiniz .
Ayrıca, güvenlik konularını anlamanızı da artırır - yazma veya çalıştırma, yığın taşmaları vb.
Bazı eşzamanlılık sorunları, yalnızca talimat başına seviyede neler olduğunun farkında olduğunuzda görünür hale gelir.
Tam kaynak koduna sahip değilseniz, bazen hata ayıklama sırasında yararlı olabilir.
Meraklılık değeri var. Yine de sanal işlevler nasıl uygulanır? Assembler'da DirectX veya COM programları yazmaya çalıştınız mı? Büyük yapılar nasıl döndürülür, çağıran işlev onlar için bir alan sunar mı yoksa tam tersi mi?
Sonra, grafik donanımı için özel montaj dilleri vardır, ancak gölgelendirici dilleri birkaç yıl önce yüksek seviyeye çıkmış olsa da, bir problem hakkında farklı bir şekilde düşünmenizi sağlayan her şey iyidir.