210 likes | 332 Views
Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης. Μάθημα Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφαλαίο Έκτο Ο προγραμματισμός στη συμβολική γλώσσα μηχανής του ΜΙΧ 1009 Κλήση κώδικα Μέρος Δεύτερο Καθηγητής: Α. Βαφειάδης 200 5.
E N D
Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφαλαίο Έκτο Ο προγραμματισμός στη συμβολική γλώσσα μηχανής του ΜΙΧ 1009 Κλήση κώδικα Μέρος Δεύτερο Καθηγητής: Α. Βαφειάδης 2005
Καλούμενοι κώδικες (routines) • Μια ρουτίνα είναι ένας κώδικας που καλείται από έναν άλλο κώδικα • Τύποι ρουτινών • Κλειστές ρουτίνες (εκτελέσιμος κώδικας) • Καλούνται στο επίπεδο εκτέλεσης • Μετά το τέλος της κλίσης επιστρέφουν στον κώδικα από τον οποίο κλήθηκαν • Ο κώδικας υπάρχει μόνο μια φορά στην μνήμη • Ανοικτές ρουτίνες (πηγαίος κώδικας) • Καλούνται στο επίπεδο μετάφρασης (macros) από τον μεταφραστή • Ενσωματώνονται στον πηγαίο κώδικα
Τα γεγονότα μιας κλήσης • Ο Μηχανισμός κλήσης και επιστροφής • Η Διάσωση και αποκατάσταση των καταχωρητών • Το Πέρασμα των παραμέτρων
Μηχανισμός Κλήσης • Εντολή κλήσης • JMP < όνομα καλούμενης ρουτίνας> • Όνομα ρουτίνας • Η ετικέτα (label) της πρώτης εκτελέσιμης εντολής • Μέθοδοι κλήσεις • Μέθοδος καθαρού κώδικά • Η διεύθυνση επιστροφής αποθηκεύεται σε μια θέση μνήμης που ορίζεται από τον προγραμματιστή • Μέθοδος μη καθαρού κώδικα • Η διεύθυνση επιστροφής αποθηκεύεται στην τελευταία εντολή της ρουτίνας, δηλαδή στην εντολή που οδηγεί τη ροή του προγράμματος πίσω στην ρουτίνα κλήσης
Η μέθοδος καθαρού κώδικα MINIMUM STJ SAVE(0:2) . . . . . . . . . . . Κώδικας ρουτίνας . . . . . . . . . . . JMPSAVE,7 SAVECON 0
Μέθοδος μη καθαρού κώδικα MINIMUM STJ EXITMIN(0:2) . . . . . . . . . . . Κώδικας ρουτίνας . . . . . . . . . . . EXITMINJMP *
Μη καθαρός κώδικας (παράδειγμα) * ΚΥΡΙΑ ΡΟΥΤΙΝΑ ORIG 8 ARRAY ORIG *+100 ΠΙΝΑΚΑΣ ΜΕ ΔΕΔΟΜΕΝΑ MIN CON 0 ΕΛΑΧΙΣΤΟ ΣΤΟΙΧΕΙΟ ΠΙΝΑΚΑ BEGIN . . . . . . . . * ΕΝΤΟΛΕΣ ΑΝΑΓΝΩΣΗΣ ΤΟΥ ΠΙΝΑΚΑ ARRAY JMP MINIMUM ΚΛΗΣΗ ΡΟΥΤΙΝΑΣ MINIMUM STA MIN ΑΠΟΘΗΚΕΥΣΗ ΕΛΑΧ. ΤΙΜΗΣ . . . . . . . . HLT * ΡΟΥΤΙΝΑ ΕΥΡΕΣΗΣ ΕΛΑΧ. ΣΤΟΙΧΕΙΟΥ ΠΙΝΑΚΑ ΜΕ 100 ΘΕΣΕΙΣ * MINIMUM STJ EXITMIN(0:2) ΔΙΑΣΩΣΗ ΔΙΕΥΘ. ΕΠΙΣΤΡΟΦΗΣ ΕΝΤ2 100 ΔΕΙΚΤΗΣ ΠΙΝΑΚΑ (ΑΡΧΙΚΗ ΤΙΜΗ=100) LDA ARRAY-1,2 ΠΡΩΤΟ ΣΤΟΙΧΕΙΟ ΤΟ ΕΛΑΧΙΣΤΟ LOOP CMPA ARRAY-1,2 ΒΡΟΓΧΟΣ ΑΠΟ 100 ΩΣ 1 ΜΕ ΒΗΜΑ -1 JLE *+2 LDA ARRAY-1,2 ΒΡΕΘΗΚΕ ΜΙΚΡΟΤΕΡΟ ΣΤΟΙΧΕΙΟ DEC2 1 ΕΠΟΜΕΝΟ ΣΤΟΙΧΕΙΟ J2P LOOP ΤΕΛΟΣ ΒΡΟΓΧΟΥ EXITMIN JMP * ΕΠΙΣΤΡΟΦΗ ΣΤH ΡΟΥΤΙΝΑ ΚΛΗΣΗΣ END BEGIN
Μη καθαρός κώδικας (παράδειγμα) m I F C m I F C 1000 + 10 10 00 02 40 + 10 10 00 02 40 1001 + 01 44 00 02 62 + 01 44 00 02 62 1002 + 00 07 02 05 10 + 00 07 02 05 10 1003 + 00 07 02 05 70 + 00 07 02 05 70 1004 + 10 06 00 11 47 + 10 06 00 11 47 1005 + 00 07 02 05 70 + 00 07 02 05 70 1006 + 00 01 00 01 62 + 00 01 00 01 62 1007 + 10 03 00 02 53 + 10 03 00 02 53 1010 + 10 10 00 00 47+ 02 01 00 00 47 Κώδικας μετά την μετάφραση Κώδικας μετά την εκτέλεση
Φύλαξη-αποκατάσταση καταχωρητών • Στην ρουτίνα κλήσης • Στην καλούμενη ρουτίνα • Μέθοδος καθαρού κώδικα • Μέθοδος μη καθαρού κώδικα
Φ-Α στην ρουτίνα κλήσης * ΚΥΡΙΑ ΡΟΥΤΙΝΑ ORIG 8 ARRAY ORIG *+100 ΠΙΝΑΚΑΣ ΜΕ ΔΕΔΟΜΕΝΑ MIN CON 0 ΕΛΑΧΙΣΤΟ ΣΤΟΙΧΕΙΟ ΠΙΝΑΚΑ SAVE ORIG *+8 ΧΩΡΟΣ ΦΥΛΑΞΗΣ ΤΩΝ ΚΑΤΑΧ. BEGIN . . . . . . . * ΕΝΤΟΛΕΣ ΑΝΑΓΝΩΣΗΣ ΤΟΥ ΠΙΝΑΚΑ ARRAY STA SAVE STX SAVE+1 ST1 SAVE+2 ΦΥΛΑΞΗΚΑΤΑΧΩΡΗΤΩΝ . . . . . . . ST6 SAVE+7 JMP MINIMUM ΚΛΗΣΗΡΟΥΤΙΝΑΣ MINIMUM STA MIN ΑΠΟΘΗΚΕΥΣΗΕΛΑΧ. ΤΙΜΗΣ LDA SAVE LDX SAVE+1 LD1 SAVE+2 ΑΠΟΚΑΤΑΣΤΑΣΗ ΚΑΤΑΧΩΡΗΤΩΝ . . . . . . . LD6 SAVE+ HLT END BEGIN
Φ-Α στην καλούμενη ρουτίνα (καθαρός) MINIMUM STJ EXITMIN(0:2) ΔΙΑΣΩΣΗ ΔΙΕΥΘ. ΕΠΙΣΤΡΟΦΗΣ ST2 TEMP2 ΔΙΑΣΩΣΗ ΤΗΣ ΤΙΜΗΣ ΤΟΥ rI2 * ΕΝΤ2 100 LDA ARRAY-1,2 LOOP CMPA ARRAY-1,2 JLE *+2 LDAARRAY-1,2 DEC2 1 J2PLOOP * LD2 TEMP2 ΕΠΙΣΤΡΟΦΗ ΤΗΣ ΤΙΜΗΣ ΤΟΥ rΙ2 EXITMIN JMP * ΕΠΙΣΤΡΟΦΗ ΣΤH ΡΟΥΤΙΝΑ ΚΛΗΣΗΣ * TEMP2 ORIG *+1 OΡΙΣΜΟΣ ΤΗΣ ΜΕΤΑΒΛ. TEMP2
Φ-Α στην καλούμενη ρουτίνα (μη καθαρή μέθοδος ή αυτοτροποποίησης) MINIMUM STJ EXITMIN(0:2) ΔΙΑΣΩΣΗ ΔΙΕΥΘ. ΕΠΙΣΤΡΟΦΗΣ ST2 TEMP2(0:2) ΔΙΑΣΩΣΗ ΤΗΣ ΤΙΜΗΣ ΤΟΥ rI2 * ΕΝΤ2 100 LDA ARRAY-1,2 LOOP CMPA ARRAY-1,2 JLE *+2 LDA ARRAY-1,2 DEC2 1 J2P LOOP * TEMP2 ENT2 * ΕΠΙΣΤΡΟΦΗ ΤΗΣ ΤΙΜΗΣ ΤΟΥ rI2 EXITMIN JMP * ΕΠΙΣΤΡΟΦΗ ΣΤH ΡΟΥΤΙΝΑ ΚΛΗΣΗΣ
Παράδειγμα παρουσίασης ρουτίνας *ΥΠΟΡΟΥΤΙNΑ ΜΙΝΙΜUM * Η ΡΟΥΤΙΝΑ ΜΙΝΙΜUM ΒΡΙΣΚΕΙ ΤΟ ΕΛΑΧΙΣΤΟ ΣΤΟΙΧΕΙΟ ΕΝΟΣ ΠΙΝΑΚΑ * ΜΕ 100 ΣΤΟΙΧΕΙΑ ΚΑΙ ΤΟ ΑΠΟΘΗΚΕΥΕΙ ΣΤΟΝ ΚΑΤΑΧΩΡΗΤΗ Α * * ΠΑΡΑΜΕΤΡΟΣ ΕΙΣΟΔΟΥ : ΠΙΝΑΚΑΣ ARRAY (ΟΛΙΚΗ ΜΕΤΑΒΛΗΤΗ) * Η ΟΠΟΙΑ ΔΗΛΩΝΕΤΑΙ ΣΤΗΝ ΡΟΥΤΙΝΑ ΚΛΗΣΗ * ΠΑΡΑΜΕΤΡΟΣ ΕΞΟΔΟΥ : ΚΑΤΑΧΩΡΗΤΗΣ Α * ΤΟΠΙΚΟΙ ΚΑΤΑΧΩΡΗΤΕΣ : rΙ2 . Η ΑΡΧΙΚΗ ΤΙΜΗ ΔΙΑΣΩΖΕΤΑΙ * ΗΜΕΡΟΜΗΝΙΑ : 12 ΑΠΡΙΛΙΟΥ 1988 * ΠΡΟΓΡΑΜΜΑΤΙΣΤΗΣ : ΒΑΦΕΙΑΔΗΣ ΑΝΤΩΝΗΣ * MINIMUM STJ EXITMIN(0:2) ΔΙΑΣΩΣΗ ΔΙΕΥΘΥΝΣΗΣ ΕΠΙΣΤΡΟΦΗΣ ST2 TEMP2(0:2) ΔΙΑΣΩΣΗ ΤΗΣ ΤΙΜΗΣ ΤΟΥ rI2 ΕΝΤ2 100 LDA ARRAY-1,2 LOOP CMPA ARRAY-1,2 JLE *+2 LDA ARRAY-1,2 DEC2 1 J2P LOOP TEMP2 ENT2 * ΕΠΙΣΤΡΟΦΗ ΤΗΣ ΤΙΜΗΣ ΤΟΥ rI2 EXITMIN JMP * ΕΠΙΣΤΡΟΦΗ ΣΤH ΡΟΥΤΙΝΑ ΚΛΗΣΗΣ
Πέρασμα Παραμέτρων • Μέθοδος μέσω καταχωρητών • Μέθοδος μέσω μεταβλητών • Μικτή μέθοδος
Πέρασμα παραμέτρων μέσω καταχωρητών
Πέρασμα παραμέτρων (καταχωρητές) * ΡΟΥΤΙΝΑ ΚΛΗΣΗΣ Ν EQU 100 ΜΗΚΟΣ ΠΙΝΑΚΑ MIN ORIG *+1 ΕΛΑΧ. ΣΤΟΙΧΕΙΟ ΤΟΥ ΠΙΝΑΚΑ ARRAY ORIG *+N ΠΙΝΑΚΑΣ ARRAY BEGIN ........................................ * * ΕΝΤΟΛΕΣ ΑΝΑΓΝΩΣΗΣ ΤΩΝ ΣΤΟΙΧΕΙΩΝ ΤΟΥ ΠΙΝΑΚΑ * * ΠΡΟΕΤΟΙΜΑΣΙΑ ΚΛΗΣΗΣ ΤΗΣ ΡΟΥΤΙΝΑΣ ΜΙΝΙMUM (ΤΟΠΟΘΈΤΗΣΗ ΠΑΡΑΜΕΤΡΩΝ) ENT1 ARRAY ΑΡΧΙΚΗ ΔΙΕΥΘΥΝΣΗ ARRAY ENT2 N ΜΗΚΟΣ ΤΟΥ ΠΙΝΑΚΑ * ΚΛΗΣΗ ΡΟΥΤΙΝΑΣ JMP MINIMUM * ΕΞΑΣΦΑΛΙΣΗ ΠΑΡΑΜΈΤΡΟΥ ΕΞΟΔΟΥ STA MIN ΑΠΟΘΗΚΕΥΣΗ ΤΟΥ ΕΛΑΧΙΣΤΟΥ HLT END BEGIN
Πέρασμα παραμέτρων (καταχωρητές) * ΡΟΥΤΙΝΑ ΠΟΥ ΥΠΟΛΟΓΙΖΕΙ ΤΟ ΕΛΑΧΙΣΤΟ ΣΤΟΙΧΕΙΟ ΠΙΝΑΚΑ * Ο rΑ ΠΕΡΙΕΧΕΙ ΤΟ ΕΛΑΧΙΣΤΟ ΣΤΟΙΧΕΙΟ * Ο rΙ1 ΠΕΡΙΕΧΕΙ ΤΗΝ ΔΙΕΥΘΥΝΣΗ ΤΟΥ ΠΡΩΤΟΥ ΣΤΟΙΧΕΙΟΥ ΤΟΥ ΠΙΝΑΚΑ * Ο rΙ2 ΠΕΡΙΕΧΕΙ ΤΟ ΜΗΚΟΣ ΤΟΥ ΠΙΝΑΚΑ * MINIMUM STJ EXITMIN(0:2) ΦΥΛΑΞΗ ΔΙΕΥΘ. ΕΠΙΣΤΡΟΦΗΣ ST3 TEMP3(0:2) ΦΥΛΑΞΗ ΤΟΥ rI3 ST4 TEMP4(0:2) ΦΥΛΑΞΗΤΟΥ rI4 ENT3 0,1 Ι3 Ι1 ENT4 0,2 Ι4 Ι2 LDA 0,3 LOOP CMPA 0,3 JLE *+2 LDA 0,3 INC3 1 DEC4 1 J4P LOOP TEMP3 ENT3 * ΑΠΟΚΑΤΑΣΤΑΣΗ ΤΟΥ rI3 TEMP4 ENT4 * ΑΠΟΚΑΤΑΣΤΑΣΗ ΤΟΥ rI4 EXITMIN JMP * ΕΠΙΣΤΡΟΦΗ ΣΤH ΡΟΥΤΙΝΑ ΚΛΗΣΗΣ
Χειρισμός πίνακα ΡΟΥΤΙΝΑ ΚΛΗΣΗΣ ΕΝΤ1 <- Αρχή πίνακα ΕΝΤ2 <- Μήκος πίνακα ΚΑΛΟΥΜΕΝΗ ΡΟΥΤΙΝΑ REG[3] <- Αρχή πίνακα LDA 0,3 V=0+REG(3) REG[A] <- πρώτο στοιχείο
Πέρασμα παραμέτρων (μεταβλητές) * ΡΟΥΤΙΝΑ ΚΛΗΣΗΣ Ν EQU 100 ΜΗΚΟΣ ΠΙΝΑΚΑ ARRAY ORIG *+N ΠΙΝΑΚΑΣ MIN ORIG *+1 ΕΛΑΧΙΣΤΟ ΣΤΟΙΧΕΙΟ BEGIN * ΕΝΤΟΛΕΣ ΑΝΑΓΝΩΣΗΣ ΤΩΝ ΣΤΟΙΧΕΙΩΝ ΤΟΥ ΠΙΝΑΚΑ * * ΕΝΤΟΛΕΣ ΠΡΟΕΤΟΙΜΑΣΙΑΣ ΚΛΗΣΗΣ ENT1 ARRAY ST1 ADDARR ENT2 N ST2 LENGTH JMP MINIMUM * ΕΝΤΟΛΕΣ ΜΕΤΑ ΤΗΝ ΚΛΗΣΗ LDAELAXISTO STAMIN HLT ENDBEGIN