Παρασκευή 1 Ιουλίου 2016

Αναθεώρηση 11 (Έκδοση 8.2) - Αλλαγή μεγέθους Stack

Κάνοντας έλεγχο, που κράτησε μερικές μέρες, βρήκα κάτι στο οποίο δεν έχω λογική εξήγηση, αλλά διόρθωσε ένα θέμα.
Είχα αυξήσει το μέγεθος του stack του ΕΧΕ προγράμματος (που καλεί το m2000.dll) ώστε να μπορεί η Μ2000 στις συναρτήσεις να έχει αναδρομή μέχρι 14500 κλήσεις. (στις ρουτίνες η αναδρομή ορίζεται με την εντολή ΟΡΙΟ.ΑΝΑΔΡΟΜΗΣ και μπορεί να είναι πολύ μεγάλη, π.χ. 50000 κλήσεις και παραπάνω, επειδή οι ρουτίνες έχουν κλήσεις εντός αντικείμενου εκτέλεσης, με χρήση σωρού ξεχωριστού - ενώ οι συναρτήσεις και τα τμήματα έχουν η καθεμία αντικείμενο εκτέλεσης και αυτό επιβαρύνει το σύστημα, επειδή όλα αυτά χρησιμοποιούν τον ίδιο σωρό καταχώρησης "αυτόματων" μεταβλητών).
Το πρόβλημα που αντιμετώπισα ήταν με το WebBrowser control. Η Μ2000 έχει ένα μόνο WebControl πάνω στη κονσόλα και μπορεί να δείχνει σελίδες html. Το πρόβλημα είναι ότι ο σωρός κλέβει δεν ξέρω τι και δεν αφήνει το στοιχείο αυτό να δείξει φωτογραφίες (στην αρχή αυτό είδα) και μετά κατάλαβα ότι δεν αφήνει και τα βίντεο να παίξουν. Όσο μείωνα το σωρό τόσο εξαφανίζονταν τα προβλήματα. Έπρεπε να βρω το βέλτιστο, και ίσως το πέτυχα. Έτσι τώρα μπορούμε να ανοίξουμε το www.youtube.gr
Με την εντολή:
Αναλόγιο www.youtube.gr

άλλες εντολές:
Αναλόγιο "about:Hello"

δείτε Βοήθεια Αναλόγιο
Με το Esc κλείνουμε το αναλόγιο, (σε περίπτωση που το έχουμε σε φουλ οθόνη)

Επιπλέον έβαλα και ένα τρόπο να ενημερώνεται το σύστημα για το τρόπο emulation του στοιχείου (από την αρχή είναι για τον Explorer 6.0, και αυτό δεν είναι καλό).


Το μέγεθος Stack είναι τώρα στα 3375, πολύ μικρό σε σχέση με το 14500, αλλά πρακτικά δεν έχουμε ποτέ τόση μεγάλη αναδρομή.
Αν θέλουμε όμως μπορούμε με χρήση ρουτινών να έχουμε πολύ μεγαλύτερο αριθμό αναδρομών.
Επειδή το μέγεθος του σωρού το αλλάζουμε στο exe αρχείο, αν χρησιμοποιήσουμε το m2000.dll σε άλλο πρόγραμμα τότε ψευδώς θα νομίζει ότι έχει 3375 όριο αλλά μπορεί να πέσει.
Υπάρχουν οι παρακάτω εντολές που βοηθούν. Ο διακόπτης +REC βάζει το εξ ορισμού όριο (είναι γραμμένο στο dll), ενώ το -REC βάζει το 300
monitor
Διακόπτες "+REC"
Διακόπτες "-REC"
Μπορούμε μέσω του regedit να αλλάξουμε το όριο στο παρακάτω κλειδί
HKEY_CURRENT_USER\Software\m2000v5\funcdeep

Γ.Κ.

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.