Η χρήση στοίβας στην κλήση διαδικασιών (Λάθος σχολικού;)

Ξεκίνησε από gtk, 13 Απρ 2010, 01:03:04 ΠΜ

« προηγούμενο - επόμενο »

gtk

στη σελ. 219 το παράδειγμα του σχολικού γράφει:
Για παράδειγμα, έστω ότι μία διαδικασία a  καλεί τη διαδικασία b, που με τη σειρά της καλεί τη διαδικασία c  κοκ. Στην περίπτωση αυτή οι διευθύνσεις επιστροφής εμφανίζονται στη στοίβα με σειρά c,b,a.
Μήπως η σωστή διατύπωση πρέπει να είναι:
Για παράδειγμα, έστω ότι μία διαδικασία a  καλεί τη διαδικασία b, που με τη σειρά της καλεί τη διαδικασία c  κοκ. Στην περίπτωση αυτή οι διευθύνσεις επιστροφής εμφανίζονται στη στοίβα με σειρά γ, β, α και όχι τα ονόματα των διαδικασιών όπως σαφέστατα φαίνεται στο σχήμα του σχολικού βιβλίου;

P.Tsiotakis

στη στοίβα χρόνου εκτέλεσης μπαίνουν οι διευθύνσεις επιστροφής, όχι τα ονόματα των υποπρογραμμάτων

gtk

Συμφωνούμε λοιπόν ότι πράγματι υπάρχει αστοχία του σχολικού βιβλίου...

gthal

Επίσης, μόλις παρατήρησα ότι το βιβλίο λέει:
Παράθεση
Όταν μία διαδικασία ή συνάρτηση καλείται από
το κύριο πρόγραμμα, τότε η αμέσως επόμενη διεύθυνση του κύριου προ-
γράμματος, που ονομάζεται διεύθυνση επιστροφής (return address), α-
ποθηκεύεται από το μεταφραστή σε μία στοίβα που ονομάζεται στοίβα
χρόνου εκτέλεσης (execution time stack).
Ποιος είναι πάλι ο μεταφραστής ? Έχει ξαναμιλήσει για μεταφραστή?
Μπας και εννοεί το μεταγλωττιστή ή διερμηνευτή ?
Και εντάξει, ο διερμηνευτής μπορεί να έχει αυτό το "καθήκον". Ο μεταγλωττιστής όμως ????   :D
Φιλικά,
Γιώργος Θαλασσινός

P.Tsiotakis

στην αρχή της παραγράφου 6.7 αναφέρει πως μεταφραστικά προγράμματα είναι ο μεταγλωττιστής και ο διερμηνευτής

gthal

Ωραία, αλλά ο μεταγλωττιστής όμως δεν μπορεί να κάνει τέτοια δουλειά !
Φιλικά,
Γιώργος Θαλασσινός

sstergou

Σίγουρα υπάρχει πρόβλημα σε αυτό το σημείο.
Το θέμα έχει ξανασυζητηθεί https://alkisg.mysch.gr/steki/index.php?topic=1878.0

Γιατί όμως δεν μπορεί ο μεταγλωττιστής να το κάνει;

gthal

Γιατί αυτά συμβαίνουν σε real time κατά την εκτέλεση του προγράμματος και όχι κατά τη μεταγλώττιση.
Πού να ξέρει ο μεταγλωττιστής αν θα γίνει κλήση στο υποπρόγραμμα, πότε θα γίνει και από ποιο σημείο;
Φιλικά,
Γιώργος Θαλασσινός

tom

Παιδιά νομίζω πως η διαχείριση της στοίβας χρόνου εκτέλεσης γίνεται από το Λ.Σ, οπότε μην τσακώνεστε.  :)
Θωμάς Σκυλογιάννης

- Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                     Μαχάτμα Γκάντι

sdancer75

Παράθεση από: gtk στις 13 Απρ 2010, 01:03:04 ΠΜ
στη σελ. 219 το παράδειγμα του σχολικού γράφει:
Για παράδειγμα, έστω ότι μία διαδικασία a  καλεί τη διαδικασία b, που με τη σειρά της καλεί τη διαδικασία c  κοκ. Στην περίπτωση αυτή οι διευθύνσεις επιστροφής εμφανίζονται στη στοίβα με σειρά c,b,a.
Μήπως η σωστή διατύπωση πρέπει να είναι:
Για παράδειγμα, έστω ότι μία διαδικασία a  καλεί τη διαδικασία b, που με τη σειρά της καλεί τη διαδικασία c  κοκ. Στην περίπτωση αυτή οι διευθύνσεις επιστροφής εμφανίζονται στη στοίβα με σειρά γ, β, α και όχι τα ονόματα των διαδικασιών όπως σαφέστατα φαίνεται στο σχήμα του σχολικού βιβλίου;

Αφού ξεκαθαρίζει ότι στη στοίβα μπαίνουν οι διευθύνσεις επιστροφής με τη σειρά που αναφέρει ποιο είναι το πρόβλημα ? Δεν λέει ότι στη στοίβα μπαίνουν τα ονόματα των διαδικασιών έλεος !
G. Papaioannou

gtk

Αγαπητέ συνάδελφε sdancer75, το σχολικό λέει :
Για παράδειγμα, έστω ότι μία διαδικασία a  καλεί τη διαδικασία b , που με τη σειρά της καλεί τη διαδικασία c . Στην περίπτωση αυτή οι διευθύνσεις επιστροφής εμφανίζονται στη στοίβα με σειρά c, b, a. Άρα στο κείμενο αυτό  c, b, a είναι διευθύνσεις επιστροφής ή ονόματα διαδικασιών;
Το σωστό για μένα είναι το γ,β,α.
Και τέλος, χαρακτηρισμοί του τύπου ...έλεος... δεν νομίζω ότι είναι δόκιμος όρος. Πρόσεξε καλύτερα την έκφρασή σου και κοίταξε το σχολικό βιβλίο πιο προσεκτικά.
Ευχαριστώ
Μάχιμος εκπαιδευτικός (gtk)