- Katılım
- 5 Mart 2017
- Mesajlar
- 6.714
- Makaleler
- 7
- Çözümler
- 59
Daha fazla
- Cinsiyet
- Erkek
Enigma'da Linux kullanılıyor. Linux'ta da bazı noktalarda Assembly kullanılmak zorunda.Enigma'yı duydum evet yine Assembly'le mi yazıyorlar işletim sistemlerini?
C dili belleğin tamamının kendine ayrıldığını düşünür. Fakat neredeyse tüm işlemci mimarilerinde bir "pre-boot firmware" bulunur, x86'da bunu BIOS olarak biliyoruz. Bulunmasa bile o mimari "memory-mapped I/O" sistemini kullanıyordur. Yani belli bellek adresleri ile işlemci aynı bellek havuzunu kullanıyordur ve belleğin her adresine veri yazmak bir yerde toslamamıza sebep olacaktır. Çekirdeğin ilk çalıştırılan kısmı bunun için Assembly ile yazılmak zorundadır, bu tarz limitleri ayarlayabiliyorsun.
Driver yazarken de C kodunda pat diye karşına
asm() diye bir kod çıkarsa şaşırma. Çünkü işlemcinin diğer kontrol edilebilen elektronik komponentlerle irtibat kurma şekli o komponentlerin olduğu adreslere sinyal göndermektir. x86 mimarisinde "out" ve "in" Assembly yönergeleri belirli adreslere belirli sinyallerin yollanmasını sağlar (port-mapped I/O). ARM mimarisinde de "memory-mapped I/O" sistemi kullanıldığı için, belirli bellek adreslerine yazmak yeterli oluyor. Memory-mapped sistemlerde genellikle driver kodlarında void pointer (void*) kullanılarak pointer mantığıyla da erişim sağlanabiliyor.Bunlar zamanla oturacak. Merak etme. Çok çok fazla araştırma yapman gerekli tabii oturması için.