Fonksiyonlar bellekte nasıl saklanır?

Arkadaşlar Fonksiyonlar nasıl bellekte saklanıyor ve bellekten çağırılıp execute ediliyor?
:thinking:

storage class’lardan mı bahsediyorsun yoksa işin mekanik kısmını mı soruyorsun reis

Aslinda dogru soru, “herhangi bir veri bellekte nasil saklaniyor?”

Bunun cevabini bulursan, sorunun cevabini da bulursun.

1 Beğeni

sorum fonksiyonların nasıl saklandığı.
bazılarına sorduğumda stack da veya heap de saklanmıyor ama emin değilim tarzı şeyler söytlemişti

Tamam, ben de cevabini bulmak icin hangi yoldan gitmen gerektigini gosterdim.

Bu nerede saklandiginin cevabi. Nasil saklandiginin cevabi degil.


Aslinda konu gomulu programlamayla alakali. Hatta elektronik ile.

buraya bir göz atar mısın?

  1. başlıkta geri çağırma diye bir yer var. Orada mantıksal açıklamalar yapılmış. İstediğin şeydir inş

Fonksiyonlar hafızanın text segmentinde saklanıyor.

Bellekteki fonksiyonların içeriğine erişmenin bellekteki herhangi bir yere erişmekten temelde farkı yok.

Çalıştırılma kısmı CPU ile alakalı.

2 Beğeni

Fonksiyonlar program kodundaki etiketler(asm de etiket denir zaten) olarak düşünülebilir. Dolayısıyla program çalışırken kod nerede saklanıyorsa fonksiyonlar da orada saklanıyor. Ve kodun doğal akışında sadece işaretçi(program counter) değiştiriliyor. Çalıştırma da normal bir şekilde yapılıyor.

fonksiyon
    bir takım işler

main
    başlangıç

nasıl yani hafızanın text segmenti mi asm kodlarını incelerken _text mi ne öyle bişi görmüştüm derlediğim kodun orası olabilir mi?

asm de yani çalıştırdığımızda o fonksiyonun etiketine zıplıyor orayı çalıştırıyor ve devam mı ediyor normal rotadan çalıştırmaya?
yani bu runtime da bellekte bir yer kaplamıyor gibi bir anlam çıkarmama neden oldu ama aklıma ayrıca
function pointers geliyor internette okuduklarıma göre normal olarak binary şeklinde saklanıyor ama işleme de komutlarmış gibi işliyor muş sanırım
:confused: yazdıklarım dan bir şey anlamadıysanız aklım karışık demektir

Temel islemci mimarisine goz atmanda fayda olabilir.

Harvard mimarilerde kod hafizasinda, von Neumann mimarilerde ana hafizada (datayla ayni yerde) saklaniyor.

Isletim sistemi calistirilabilir dosyalarinda .text (kod) segmentinde saklaniyor.

Calisma esnasinda calistirilabilir page’lerde saklaniyor.

Bytecode kullanan dillerde baska, scripting dillerdinde bambaska bir sekilde saklaniyor.

C++ dili bunlarin hic birisi hakkinda bir sey soylemiyor, garanti vermiyor. Islemci mikrokodunda veya devre yapisinda saklanan fonksiyonlar da var.

2 Beğeni

yani temelde bir fonksiyon komutlardan oluşan binaryler halinde saklanıyor yani programımız runtime da o binaryleri birer komut gibi işliyor
öyle mi hocam @aib?

1 Beğeni

Bir fonksiyon, çeşitli işlemleri(ALU’da yapılan) içinde, çeşitli türlerde barındıran bir atamadır. Bir atama, temelde CPU’de işlenecek ya da daha sonra işlenecek bir verinin(bool verisi), direk ramde adres çevriminin olması(yani adreslenmesi) sağlanarak saklanır. Bunu CPU sağlar(Atamayı CPU içindeki ALU yapar). Yani sürekli olarak(cpunun aludan flaglere atama hızına eş olarak) ramde saklanır bir kısasüreli çevrim oluşur(kısa süreli bellek çevrimi). Tabi atandığı süre boyunca ya da çalıştığı(ki ramde çalışan programlar da böyledir). Ram-Cpu ve aralarındaki registerların sürekli çevrimi halinde çalışır bütün kısa süreli program ve fonksiyonlar. Bildiğim kadarıyla… Fakat yine yeni mimarilerde farklı paralel işlemeler hatta yeni ALU tipleri bile olduğunu gördüm. Uzman değilim, ama anladığım kadarıyla bu biçimde.

terimlerde bulusamadigimiz icin “oyle” veya “degil” diye cevaplayamayacagim.

ne komutlari?

“binary” bir temsil.

sayi 42 = binary: 101010 = 2 byte: ‘4’ ve ‘2’ = 2 byte: ‘2’ ve ‘4’ = ASCII: "

komut gibi islemek?