Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα.Θα ήθελα να ρωτήσω το εξής: Πώς απαντάμε στην ερώτηση "Πόσο χώρο στην μνήμη ενός υπολογιστή MIPS καταλαμβάνει το ακόλουθο πρόγραμμα πέντε εντολών συμβολικής γλώσσας MIPS όταν μετατραπεί σε εκτελέσιμο (κώδικα μηχανής); "

Για παράδειγμα,το ακόλουθο πρόγραμμα της εκφώνησης είναι:

   li $t2, 600

   move $s4, $t2
   sub $s5, $s4, 30
   j FINISH
HERE: addi $t2, $t2, 500
FINISH:

 

Πώς υπολογίζω πόσο χώρο καταλαμβάνει στην μνήμη?Ευχαριστώ.

Δημοσ. (επεξεργασμένο)

Καλησπέρα.Θα ήθελα να ρωτήσω το εξής: Πώς απαντάμε στην ερώτηση "Πόσο χώρο στην μνήμη ενός υπολογιστή MIPS καταλαμβάνει το ακόλουθο πρόγραμμα πέντε εντολών συμβολικής γλώσσας MIPS όταν μετατραπεί σε εκτελέσιμο (κώδικα μηχανής); "

Για παράδειγμα,το ακόλουθο πρόγραμμα της εκφώνησης είναι:

   li $t2, 600

   move $s4, $t2
   sub $s5, $s4, 30
   j FINISH
HERE: addi $t2, $t2, 500
FINISH:

 

Πώς υπολογίζω πόσο χώρο καταλαμβάνει στην μνήμη?Ευχαριστώ.

Η li δεν είναι πραγματική εντολή. Είναι ψευδοεντολή. Κανονικά, η λειτουργικότητά της υλοποιείται από τουλάχιστον 1 εντολές.

Εσύ τη θέλεις όντως σαν μία; Έστω δηλαδή ότι είναι κανονική εντολή;

 

Επίσης φαντάζομαι πως μιλάμε για άσκηση πολυτεχνείου στα 2 πρώτα έτη, όπου μάλλον δεν έχουμε μάθει

για αυτά. Έτσι;

Επεξ/σία από gon1332
Δημοσ.

Ειναι άσκηση πρώτου έτους στο Τμήμα Πληροφορικής και Τηλεπικοινωνιών.

Σωστά,αυτά δεν τα έχουμε διδαχθεί ακόμα.

Φαντάζομαι πως πρέπει να την διαχωρίσουμε την ψευδοεντολή σε 2 εντολές.

Θα ήθελα περισσότερο να μου εξηγήσεις με ποιον τρόπο υπολογίζεται ο χώρος που καταλαμβάνει στην μνήμη και τι διαφορά υπάρχει αν το κομμάτι κώδικα περιέχει ψευδοεντολές ή απλές εντολές(πχ οι ψευδοεντολές καταλαμβάνουν περισσότερη μνήμη ή κάτι τέτοιο)

Ευχαριστώ.

Δημοσ.

Ειναι άσκηση πρώτου έτους στο Τμήμα Πληροφορικής και Τηλεπικοινωνιών.

Σωστά,αυτά δεν τα έχουμε διδαχθεί ακόμα.

Φαντάζομαι πως πρέπει να την διαχωρίσουμε την ψευδοεντολή σε 2 εντολές.

Θα ήθελα περισσότερο να μου εξηγήσεις με ποιον τρόπο υπολογίζεται ο χώρος που καταλαμβάνει στην μνήμη και τι διαφορά υπάρχει αν το κομμάτι κώδικα περιέχει ψευδοεντολές ή απλές εντολές(πχ οι ψευδοεντολές καταλαμβάνουν περισσότερη μνήμη ή κάτι τέτοιο)

Ευχαριστώ.

Αν πας και δεις από εδώ και κάτω, εξηγώ πως μεταφράζεις μία εντολή σε δυαδικό.

Αν καταφέρεις και σκεφτείς πως θα μετατρέψεις τη ψευδοεντολή σε μία αλληλουχία

από κανονικές εντολές, τότε το πρόβλημα είναι λυμμένο ήδη.

Για να το κάνεις αυτό απλά πρέπει να ξέρεις τί κάνει η ψευδοεντολή και στη συνέχεια,

αυτή τη λειτουργικότητα να την υλοποιήσεις με κανονικές εντολές. Δεν είναι κάτι.

 

Για παράδειγμα η ψευδοεντολή move $rt, $rs πραγματοποιεί ανάθεση τιμής από τον

καταχωρητή $rs στον $rt. Οπότε μπορείς πολύ απλά να το αντικαταστήσεις με μία

addi $rt, $rs, 0 ή add $rt, $rs, $0.

Δημοσ.

Κατάλαβα τι παίζει με τις ψευδοεντολές αλλά δεν έχει λυθεί ακόμα η απορία μου σχετικά με την μνήμη.

Στο παράδειγμα που έδωσα, η σωστή απάντηση είναι οτι το ακόλουθο πρόγραμμα καταλαμβάνει 20 bytes στην μνήμη.Πώς προκύπτει αυτό?

Δημοσ.

Άρα κάθε εντολή έχει μέγεθος 4 bytes.

Το πρόγραμμα που μου έχει δοθεί περιέχει ψευδοεντολές οπότε το τροποποίησα ως εξής:

 

add $t2,$t2,600

add $s4,$s4,$t2

addi $s5,$s4,-30

j FINISH

HERE: addi $t2,$t2,500

FINISH:

 

Άρα έχω 4 εντολές x 4 byte η καθεμία = 16 bytes σύνολο :/ .....

 

[EDIT] : Είναι και η εντολή jump οπότε σωστά βγαίνουν τα 20 bytes έτσι?

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...