6. Επιςτροφι ελζγχου ςτο ςθμείο εκκίνθςθσ

Σχετικά έγγραφα
6. Επιστροφή ελέγχου στο σημείο εκκίνησης

Υποστήριξη διαδικασιών στο υλικό των υπολογιστών

MIPS functions and procedures

Συναρτήσεις-Διαδικασίες

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4

Αρχιτεκτονική Υπολογιστών

Διαδικασίες ΙI. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 5

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

ΠΛΕ- 027 Μικροεπεξεργαστές

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος

Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια.

Παραδείγματα Assembly Μέρος Γ

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Intel x86 ISA. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΗΥ

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

Οργάνωση Υπολογιστών

LANGUAGE OF THE MACHINE. TEI Κρήτης, Τμ. ΕΠΠ, Αρχιτεκτονική Υπολογιστών. Οργάνωση Υπολογιστή. Τυπική οργάνωση υπολογιστή

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Διαλέξεις 6: Κάλεσμα Διαδικασιών, Χρήση και Σώσιμο Καταχωρητών. Μανόλης Γ.Η.

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 2 Οργάνωση μνήμης Καταχωρητές του MIPS Εντολές του MIPS 1

Αναδρομή. ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 6. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Αρχιτεκτονική Υπολογιστών

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86

Κεφάλαιο 2 Εντολές Η γλώσσα της Μηχανής (Instructions Language of the Computer)

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Κεφ. 2 Εντολές: H γλώσσα μηχανής

Παραδείγματα Assembly (Μέρος

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

Εντολές του MIPS (2)

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»

Αρχιτεκτονικζσ Συνόλου Εντολϊν

Αρχιτεκτονική Υπολογιστών

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 2 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)

ΗΜΥ Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

με έμφαση στο MIPS R2000

Εντολές: H γλώσσα μηχανής

16. Πίνακεσ και Συναρτήςεισ

Εφαρμογέσ Μικροχπολογιςτών ςτισ Τηλεπικοινωνίεσ. Έλεγχοσ ςειριακήσ θφρασ του 8051 (Serial Port)

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

Εντολές: H γλώσσα μηχανής

Ραραπάνω παρουςιάηεται ο πυρινασ των εντολϊν του επεξεργαςτι MIPS, με τισ οποίεσ, και τθν υλοποίθςθ τουσ ςε υλικό κα αςχολθκοφμε.

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

-Επεξεργαστής: datapath (δίοδος δεδοµένων) (1) και control (2) -Μνήµη (3) -Συσκευές Εισόδου (4), Εξόδου (5) (Μεγάλη ποικιλία!!)

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 19. Αλφαριθμητικά II. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Λύσεις 2 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

Εργαστήριο Αρ. 1. Εισαγωγή στην Αρχιτεκτονική MIPS. Πέτρος Παναγή Σελ. 1

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΕΛΟΠΟΝΝΗΣΟΥ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ

Βαγγζλθσ Οικονόμου Διάλεξθ 7. Συναρτιςεισ Μζροσ 2ο

Ορισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας (γενικά, αλλά και στο QtSpim pim) Η χρησιµότητα της Στοίβας στους Μικροεπεξεργαστές Κλήση συνάρτ

2

Προηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος

EPL475:Εργαστήριο 5, GDB

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 2 θ Διάλεξθ - Διεργαςίεσ

Data-Level Parallelism Linking & Loading

Αρχιτεκτονική Υπολογιστών Ι

17. Πολυδιάςτατοι πίνακεσ

ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΕΛΟΠΟΝΝΗΣΟΥ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ

Αρχιτεκτονική Υπολογιστών

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΠΛΕ- 027 Μικροεπεξεργαστές

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 6 ο και 7 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 20. Αρχεία. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

HY225 Οργάνωςη Τπολογιςτών

Τελική Εξέταση, Απαντήσεις/Λύσεις

-Επεξεργαστής: datapath (δίοδος δεδομένων) (1) και control (2) -Μνήμη (3) -Συσκευές Εισόδου (4), Εξόδου (5) (Μεγάλη ποικιλία!!)

Κεφάλαιο 2 Εντολές Η γλώσσα της Μηχανής (Instructions Language of the Computer)

Αρχιτεκτονικές Συνόλου Εντολών

Α. Δίνονται οι. (i) στη. πρέπει να. πιο. (ii) $a0. $s0 θα πρέπει να. αποθήκευση. αυξάνει τον. f: sub sll add sub jr. h: addi sw sw.

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

ΕΝΟΤΘΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΘ. ΚΕΦΑΛΑΙΟ 6: Θ «Βοικεια» ςτον Υπολογιςτι

Αρχιτεκτονική Υπολογιστών MIPS ISA

Αρχιτεκτονικές Συνόλου Εντολών

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

Στοιχεία από Assembly Γιώργος Μανής

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Αρχιτεκτονικές Συνόλου Εντολών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Internet a jeho role v našem životě Το Διαδίκτυο και ο ρόλοσ του ςτθ ηωι μασ

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

Τμήματα Μνήμησ Υπολογιςμόσ Φυςικών διευθύνςεων. Εκπαιδεφτρια: Μαρία Πολίτθ

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΤΠ 2108 Αρχιτεκτονική Υπολογιστών (Εργαστήριο) ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΚΡΗΤΗΣ. Σειρά Ασκήσεων 2

Εισαγωγικές έννοιες. Αντώνησ Κ Μαώργιώτησ

Αρχιτεκτονικές Συνόλου Εντολών

Θέµατα Φεβρουαρίου

Transcript:

Υποςτιριξθ διαδικαςιϊν ςτο υλικό των υπολογιςτϊν Βιματα ςτθν εκτζλεςθ μιασ διαδικαςίασ (procedure) 1. Τοποκζτθςθ παραμζτρων 2. Μεταβίβαςθ ελζγχου ςτθ διαδικαςία 3. Λιψθ πόρων αποκικευςθσ 4. Εκτζλεςθ επικυμθτισ εργαςίασ 5. Τοποκζτθςθ αποτελζςματοσ ςε κζςθ προςβάςιμθ από καλοφν πρόγραμμα (caller) 6. Επιςτροφι ελζγχου ςτο ςθμείο εκκίνθςθσ cslab@ntua 2012-2013 1

Υποςτιριξθ διαδικαςιϊν ςτο υλικό των υπολογιςτϊν Κλιςθ διεργαςιϊν: Σφμβαςθ κατανομισ καταχωρθτϊν $a0-$a3: τζςςερισ καταχωρθτζσ ορίςματοσ (argument regs) $v0-$v1: δφο καταχωρθτζσ τιμισ (value regs) $ra: καταχωρθτισ διεφκυνςθσ επιςτροφισ (return address reg) cslab@ntua 2012-2013 2

Υποςτιριξθ διαδικαςιϊν ςτο υλικό των υπολογιςτϊν Άλμα και ςφνδεςθ (jump and link) PC: Μετρθτισ προγράμματοσ (program counter) Κρατάει τθ διεφκυνςθ τθσ εντολισ που εκτελείται jal ΔηεύζσλζεΔηαδηθαζίας $ra PC+4 PC ΔιεφκυνςθΔιαδικαςίασ Για να επιςτρζχουμε καλοφμε jr $ra cslab@ntua 2012-2013 3

Υποςτιριξθ διαδικαςιϊν ςτο υλικό των υπολογιςτϊν Άλμα και ςφνδεςθ (jump and link) - Σφνοψθ 1. Ο caller τοποκετεί τιμζσ παραμζτρων ςτουσ $a0-$a3 2. Καλεί jal X για να μεταπθδιςει ςτθ διαδικαςία X (callee) 3. Εκτελεί υπολογιςμοφσ 4. Τοποκετεί αποτελζςματα ςτουσ $v0 - $v1 5. Επιςτρζφει με jr $ra cslab@ntua 2012-2013 4

Υποςτιριξθ διαδικαςιϊν ςτο υλικό των υπολογιςτϊν Χριςθ πολλϊν καταχωρθτϊν ςε διαδικαςίεσ; Τι γίνεται αν ζχουμε >4 ορίςματα ι/και >2 αποτελζςματα; Χρθςιμοποιοφμε ςτοίβα (stack) Last-In-First-Out push, pop μικραίνει $sp μνιμθ υψθλζσ διευκφνςεισ μεγαλϊνει cslab@ntua 2012-2013 χαμθλζσ διευκφνςεισ 5

Υποςτιριξθ διαδικαςιϊν ςτο υλικό των υπολογιςτϊν Παράδειγμα int leaf_example(int g, { int h, int i, int j) int f; g, h, i, j αντιςτοιχίηονται ςτουσ $a0, $a1, $a2, $a3 f αντιςτ. $s0 } f = (g+h) (i+j); return f; cslab@ntua 2012-2013 6

Υποςτιριξθ διαδικαςιϊν ςτο υλικό των υπολογιςτϊν Παράδειγμα int leaf_example(int g, { } int h, int i, int j) int f; f = (g+h) (i+j); return f; Σκονάκι g:$a0, h:$a1, i:$a2, j:$a3, f:$s0 leaf_example: addi $sp,$sp,-12 sw $t1, 8($sp) #ζώδοσκε $t1 sw $t0, 4($sp) #ζώδοσκε $t0 sw $s0, 0($sp) #ζώδοσκε $s0 add $t0, $a0, $a1 add $t1, $a2, $a3 sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) #επαλ. $s0 lw $t0, 4($sp) #επαλ. $t0 lw $t1, 8($sp) #επαλ. $t1 addi $sp, $sp, 12 jr $ra # πίζω ζηολ caller # f=(g+h) (i+j); cslab@ntua 2012-2013 7

Υποςτιριξθ διαδικαςιϊν ςτο υλικό των υπολογιςτϊν leaf_example: addi $sp,$sp,-12 sw $t1, 8($sp) #ζώδοσκε $t1 sw $t0, 4($sp) #ζώδοσκε $t0 sw $s0, 0($sp) #ζώδοσκε $s0 add $t0, $a0, $a1 add $t1, $a2, $a3 # f=(g+h) (i+j); sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) #επαλ. $s0 lw $t0, 4($sp) #επαλ. $t0 lw $t1, 8($sp) #επαλ. $t1 addi $sp, $sp, 12 jr $ra # πίζω ζηολ caller cslab@ntua 2012-2013 8

Υποςτιριξθ διαδικαςιϊν ςτο υλικό των υπολογιςτϊν leaf_example: addi $sp,$sp,-12 sw $t1, 8($sp) #ζώδοσκε $t1 sw $t0, 4($sp) #ζώδοσκε $t0 sw $s0, 0($sp) #ζώδοσκε $s0 add $t0, $a0, $a1 add $t1, $a2, $a3 sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) #επαλ. $s0 lw $t0, 4($sp) #επαλ. $t0 lw $t1, 8($sp) #επαλ. $t1 addi $sp, $sp, 12 jr $ra # πίζω ζηολ caller cslab@ntua 2012-2013 Σφμβαςθ: ΔΕ ΣΩΗΟΥΜΕ $t0-$t9 Ζτςι ζχουμε: leaf_example: addi $sp,$sp,-4 sw $s0, 0($sp) #ζώδοσκε $s0 add $t0, $a0, $a1 add $t1, $a2, $a3 sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) #επαλ. $s0 addi $sp, $sp, 4 jr $ra # πίζω ζηολ caller 9

Υποςτιριξθ διαδικαςιϊν ςτο υλικό των υπολογιςτϊν Ζνκετεσ διαδικαςίεσ leaf procedures (διαδικαςίεσ φφλλα): δεν καλοφν άλλεσ διαδικαςίεσ Δεν είναι όλεσ οι διαδικαςίεσ, διαδικαςίεσ φφλλα (καλά κα ιταν ) Πολλζσ διαδικαςίεσ καλοφν άλλεσ διαδικαςίεσ, ακόμα και τον εαυτό τουσ! π.χ. cslab@ntua 2012-2013 int foo(int a){... f=bar(a*2);... } ι int foo(int a){... f=foo(a-1);... } 10

Υποςτιριξθ διαδικαςιϊν ςτο υλικό των υπολογιςτϊν Αναδρομικι διαδικαςία παραγοντικοφ int fact (int n){ if(n<1) return(1); else return(n*fact(n-1)); } fact: addi $sp,$sp,-8 sw $ra,4($sp) #δηεύζ. επηζηροθής sw $a0,0($sp) #όρηζκα n slti $t0,$a0,1 beq $t0,$zero,l1 addi $v0,$zero,1 addi $sp,$sp,8 jr $ra L1: addi $a0,$a0,-1 jal fact lw $a0,0($sp) lw $ra,4($sp) addi $sp,$sp,8 mul $v0,$a0,$v0 jr $ra cslab@ntua 2012-2013 11

Υποςτιριξθ διαδικαςιϊν ςτο υλικό των υπολογιςτϊν Αναδρομικι διαδικαςία παραγοντικοφ int fact (int n){ } if(n<1) return(1); cslab@ntua 2012-2013 else return(n*fact(n-1)); Εκτόσ φλθσ!!!! #include <stdio.h> int attribute ((regparm(3)))fact(register int n); int main(void){ printf("%d\n", fact(10));} ----------------------------------------------- #gcc c fact.s #gcc caller.c fact.o o exec #./exec 1..globl fact 2. fact: 3. pushl %ebx 4. movl %eax, %ebx 5. decl %eax 6. jz.l4 7. call fact 8. imull %ebx, %eax 9..L3: 10. popl %ebx 11. ret 12..L4: x86 Assembly 13. movl $1, %eax 14. jmp.l3 13

Υποςτιριξθ διαδικαςιϊν ςτο υλικό των υπολογιςτϊν Πλθροφορίεσ που διατθροφνται/δε διατθροφνται κατά τθ κλιςθ μιασ διαδικαςίασ Διαηηρούνηαι Δε διαηηρούνηαι Αποθηκεσμένοι (saved) καηατωρηηές: $s0 - $s7 Προζωρινοί καηατωρηηές: $t0 - $t9 Καηατωρηηής δείκηη ζηοίβας (stack pointer): $sp Καηατωρηηές ορίζμαηος: $a0 - $a3 Καηατωρηηής διεύθσνζης επιζηροθής (return address): $ra Σηοίβα επάνω (higher addresses) από ηο δείκηη ζηοίβας Καηατωρηηές ηιμής επιζηροθής (return value): $v0 - $v1 Σηοίβα κάηω (lower addresses) από ηο δείκηη ζηοίβας cslab@ntua 2012-2013 14

Θ επικοινωνία με τουσ ανκρϊπουσ Οι υπολογιςτζσ «καταβροχκίηουν» αρικμοφσ Επεξεργαςία κειμζνου και άλλεσ εφαρμογζσ όμωσ κζλουν χαρακτιρεσ (chars). Κϊδικασ ASCII (American Standard Code for Information Interchange) Ζνασ χαρακτιρασ = 1 byte = 8 bits Οι λειτουργίεσ ςε chars είναι πολφ ςυχνζσ- ο MIPS παρζχει εντολζσ για μεταφορά bytes. lb $t0, 0($s1) # αλάγλωζε ελός byte load byte sb $t1, 0($s2) # αποζήθεσζε ελός byte store byte H lb φορτϊνει ζνα byte ςτα λιγότερο ςθμαντικά bits ενόσ καταχωρθτι. Θ sb αποκθκεφει το λιγότερο ςθμαντικό byte ςτθ μνιμθ. cslab@ntua 2012-2013 15

Θ επικοινωνία με τουσ ανκρϊπουσ Αντιγραφι ςυμβολοςειράσ (string) void strcpy(char x[], char y[]){ } int i; i = 0; while((x[i] = y[i])!= \0 ) /* αληηγραθή θαη έιεγτος ηοσ byte */ i+=1; Πϊσ είναι θ assembly MIPS του παραπάνω κϊδικα C; cslab@ntua 2012-2013 16

Θ επικοινωνία με τουσ ανκρϊπουσ void strcpy(char x[], char y[]){ int i; i = 0; while((x[i] = y[i])!= \0 ) i+=1; } Base address x: $a0 Base address y: $a1 i αντιςτ. ςτον $s0 strcpy: addi $sp,$sp,-4 #τώρος γηα λα sw $s0, 0($sp) #ζωζεί ο $s0 add $s0,$zero,$zero # i 0 L1: add $t1,$s0,$a1 #$t1 i+y lb $t2,0($t1) #$t2 M[i+y] add $t3,$s0,$a0 #$t2 i+x sb $t2,0($t3) #$t2 M[i+x] beq $t2,$zero,l2 #είλαη $t2==0? addi $s0,$s0,1 # i += 1 j L1 L2: lw $s0, 0($sp) #αλάθηεζε ηολ $s0 addi $sp,$sp,4 #δηόρζωζε ζηοίβα jr $ra #πίζω ζηολ θαιούληα cslab@ntua 2012-2013 17