
dll gibi düşün, hazır kodlar
bkz fasilitesi gibi düşün :)


static linking ile dynamic linking arasındaki farkı bilmen lazım bunun için...
senin programına statik linklenmiş kütüphaneler win api ile nasıl iletişim kuracağını, dll'leri yani dinamik olarak linklenen modülleri nasıl kullanacağını da bilmiş oluyor böylece...
senin yazdığın koddan başka senin programına statik olarak linklenmiş derleyicinin ya da ortama göre değişen kütüphaneler bunu sağlıyor aslında.
windows api'si dediğin şey de en nihayetinde cpu üstünde çalışabilmek için makine koduna çevriliyor. burada kodların makine koduna çevriliyor olmasının pek bir ehemmiyeti kalmıyor.


heh işte tam o noktada anlamıyorum zaten; şimdi bu program makine kodunda artık değil mi? ramde bir adrese yazılı ve cpu gidip o adresten okuyup komutları yerine getirmeye başlıyor. aslında şimdi sormak istediğim şeyi tam soramamış olduğumu farkettim. işletim sisteminin memory management ya da multi tasking gibi özellikleri var mesela; bu benim kodum da artık cpu tarafından okunup çalıştırılmaya başlandı. benim programımda başka bir adres bloğuna (ki windows'un kernelinin olduğu kısımlar olsun mesela bunlar) yönlendirme yapılmadığı sürece benim programımı okuyup çalıştırmak zorunda ve hiç bir yönlendirme olmazsa oradan asla çıkamaz. işte tam bu noktada windows kerneli nasıl bir denetim yapabiliyor onu anlamıyorum.


windows'un low level kernel process'lerini bilmiyorum lakin ipc yani inter process communication diye bir mevhum var. iki process aynı memory space'ine erişim sağlayamasa da bunların haberleşmesini sağlayan bir process yardımı ile haberleşmeleri mümkün olabiliyor. bazen bunun altyapısı cpu tarafında bile kurgulanmış olabiliyor. (örn. wii'deki arm ve ppc işlemcilerin aralarındaki haberleşme)
windows örneğine geri dönersek, senin programını çalıştıran windows'un hali hazırda kernel ile haberleşmesi mümkün, senin programını çalıştırdığında da bu imkandan senin programın da faydalanıyor diye düşünebilirsin. windows programlarının wine gibi sistemler altında çalışabilmesinin altında da biraz bu var sanıyorum.


@iron: çok teşekkür ediyorum. aslında sorsam sabaha kadar sorarım da şansı fazla zorlamamak lazım di mi :) bilgisayar mühendisliği bölümlerinde öğretiliyordur herhalde bunlar ama mühendis olmayanların bu tip şeyleri öğrenebileceği bir kaynak var mıdır acaba. ssg nasıl öğrendi mesela çok merak ediyorum, gitti mikroişlemci kitabı alıp 8086 mı programladı naptı.


okul sana kavramları öğretir, altyapı sağlar. ilgilendiğin alanda sana verilenleri birleştirip bunlar hakkında fikir sahip olmak yahut bunları uygulamaya geçirmek ise tamamen motivasyon ile alakalı.
pek tabii üniversitede bunun eğitimini almamış biri de pekala bunlara vakıf olabilir. zaten üniversitede eğitim görmüş olanların 10 tanesinden de ancak bir ya da iki tanesinin derinlere indiğini söylemek te pek yanlış olmaz.
yalnız şunu bilmen lazım, bilişim dünyasında ve belki de hayattaki her uzmanlık alanında değişik kuyular vardır. hangi kuyuya girersen gir zaman geçtikçe o kuyudan çıkman zorlaşır ve zamanla diğer kuyulara da girmek konusunda tereddütler içinde kalırsın.
bu kuyuya girmeye niyetliysen ille de assembly bilmene falan gerek yok, derleyicilerin nasıl çalıştığına, işletim sistemlerinin nasıl çalıştığına ve en sonunda ilgilendiğin işletim sisteminin nasıl çalıştığına dair derin araştırmalara girmen yeterlidir.
günümüz işlemcileri ile ilgili pratiğe gireceğini düşünürsek de assembly öğrenmesen de en azından işletim sisteminin cpu'yu nasıl kullandığına dair teorik de olsa bilgi sahibi olmak gerekiyor.
ha sana bunları yazan adam en son okulda 80386 için assembly yazmış, protected mode / real mode zarttı zurttu çok fazla ilgilenmemiş, en kapsamlı assembly deneyimini 6502 ile yaşamış biri.
high level programming kuyusuna girmemiş gençlerin günümüz işlemcileri ile işleri çok daha zor o kuyuda :)


@iron: eh ben de pek genç sayılmam, öğrencilik biteli 7-8 sene oldu. ekmeğini çeşitli frameworkler ya da scripting dilleri üstünde kod yazarak kazanan biri olarak işin en temellerini, low-level dünyasını falan bilmek istiyorum, merak ediyorum :) çok teşekkür ederim ilginize.


ssg ye ben öğrettim. yok lan yalan çarpılmayayım şimdi.
