Σύνοψη των εντολών του LC3

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Σύνοψη των εντολών του LC3"

Transcript

1

2

3 Σύνοψη των εντολών του LC3 ADD Dst, Src1, Src2 ADD Dst, Src1, imm5 AND Dst, Src1, Src2 AND Dst, Src1, imm5 NOT Dst, Src LD Dst, LABEL ST Src, LABEL LDR Dst, BaseR, offset6 STR Src, BaseR, offset6 LDI Dst, LABEL STI Src, LABEL LEA Dst, LABEL JMP BaseR BR[nzp] LABEL JSR LABEL JSRR BaseR RET TRAP trapvector8 RTI 2

4 Assembly του LC-3 Η assembly του LC-3 είναι μια γλώσσα χαμηλού επιπέδου για την αρχιτεκτονική συνόλου εντολών (ISA) του LC-3 Η LC-3 assembly είναι συμβολική γλώσσα Ο προγραμματιστής δε χρειάζεται να θυμάται το opcode κάθε εντολής, ούτε μια διεύθυνση στη μνήμη σε δυαδικό Assembly του LC3 Συμβολο-μεταφραστής (assembler) Γλώσσα Μηχανής του LC3 Εκτέλεση 3

5 Assembly του LC-3 Η assembly του LC-3 είναι μια γλώσσα χαμηλού επιπέδου για την αρχιτεκτονική συνόλου εντολών (ISA) του LC-3 Η LC-3 assembly είναι συμβολική γλώσσα Ο προγραμματιστής δε χρειάζεται να θυμάται το opcode κάθε εντολής, ούτε μια διεύθυνση στη μνήμη σε δυαδικό Πρόγραμμα σε C Μεταγλωττιστής Assembly του LC3 Συμβολομεταφραστής Γλώσσα Μηχανής του LC3 Εκτέλεση 4

6 LC-3 Simulator Ο LC-3 είναι ένα σχέδιο για έναν υπολογιστή δεν υπάρχει σε πραγματική υλοποίηση (hardware) Έχει σχεδιαστεί η αρχιτεκτονική συνόλου εντολών και μια μικροαρχιτεκτονική που την υλοποιεί Ο LC-3 simulator μας επιτρέπει να δούμε τι θα συνέβαινε κατά την εκτέλεση ενός προγράμματος: Στη μνήμη Στους καταχωρητές 5

7 LC-3 Simulator Με την εκκίνηση του simulator, εμφανίζονται δύο παράθυρα: το LC-3 console και το LC-3 interface To LC-3 console χρησιμεύει για είσοδο από το πληκτρολόγιο και έξοδο στην οθόνη 6

8 LC-3 Simulator Στο LC-3 interface μπορούμε να δούμε: τους καταχωρητές γενικού σκοπού (R0-R7) τους καταχωρητές ειδικού σκοπού (PC, IR, PSR,CC) τη μνήμη (65536 θέσεις) 7

9 Download LC-3 Simulator 09/student_view0/lc-3_simulator.html Windows και Unix version 8

10 Χρήση του LC-3 simulator (σε Linux/MacOS) Βήμα 1: Γράφουμε τον assembly κώδικα σε κάποιον editor (vim, emacs, gedit κλπ) και το αποθηκεύουμε με κατάληξη.asm π.χ. myfirstlc3program.asm Βήμα 2: Κάνουμε τη συμβολομετάφραση του κώδικα assembly: lc3as myfirstlc3program.asm και παράγεται το αρχείο myfirstlc3program.obj, που περιέχει εκτελέσιμο κώδικα (και το αρχείο myfirstlc3program.sym...) Βήμα 3: Ξεκινάμε τον simulator: lc3sim-tk & Βήμα 4: Φορτώνουμε το αρχείο.obj και εκτελούμε! 9

11 Χρήση του LC-3 simulator (σε Windows) Βήμα 1: Γράφουμε τον assembly κώδικα στον editor που παρέχεται μαζί με τον simulator και τον αποθηκεύουμε με κατάληξη.asm π.χ. myfirstlc3program.asm Βήμα 2: Κάνουμε τη συμβολομετάφραση του κώδικα assembly πατώντας το κουμπί asm του editor και παράγεται το αρχείο myfirstlc3program.obj, που περιέχει εκτελέσιμο κώδικα (και το αρχείο myfirstlc3program.sym) Βήμα 3: Ξεκινάμε τον simulator από το εκτελέσιμο Βήμα 4: Φορτώνουμε το αρχείο.obj και εκτελούμε. 10

12 Πρόγραμμα σε LC-3 Assembly Με τι μοιάζει ένα πρόγραμμα σε LC-3 assembly; Μορφή εντολών: [LABEL] <OP> <OPERANDS>; Σχόλια Παράδειγμα:.ORIG x3000 AND R1,R1,x0 ; clear R1, to be used for the running sum AND R4,R4,x0 ; clear R4, to be used as a counter ADD R4,R4,xA ; load R4 with #10, the number of times to add LEA R2,x0FC ; load the starting address of the data LOOP LDR R3,R2,x0 ; load the next number to be added ADD R2,R2,x1 ; increment the pointer ADD R1,R1,R3 ; add the next number to the running sum ADD R4,R4,#-1 ; decrement the counter BRp LOOP ; do it again if the counter is not yet zero HALT ; abbreviation of TRAP HALT.END 11

13 Ψευδοεντολές Τι είναι τα.orig,.end της προηγούμενης διαφάνειας; Στον LC-3 assembler ορίζονται ορισμένες ψευδοεντολές Λέγονται και οδηγίες προς το συμβολομεταφραστή (assembler directives) Δεν μεταφράζονται σε λειτουργίες του προγράμματος Βοηθούν τον assembler στη διαδικασία της συμβολομετάφρασης Ψευδοεντολές του LC-3.ORIG,.FILL,.BLKW,.STRINGZ,.END 12

14 Ψευδοεντολή.ORIG.ORIG MEMORY_LOCATION Δηλώνει στον assembler σε ποια θέση μνήμης θα τοποθετηθεί το πρόγραμμα Αν ένα πρόγραμμα αρχίζει με την εντολή.orig x3000 : Εικόνα μνήμης πριν τη φόρτωση του προγράμματος Εικόνα μνήμης μετά τη φόρτωση του προγράμματος Η διεύθυνση x3000 είναι «καλή» διεύθυνση για την εκχώρηση του προγράμματος, γιατί βρίσκεται αρκετές θέσεις μνήμης μακριά από τον κώδικα του λειτουργικού συστήματος 13

15 Υπενθύμιση: Η μνήμη στον LC3 14

16 Ψευδοεντολή.END.END Δηλώνει στον assembler πού τελειώνει το πρόγραμμα Οτιδήποτε ακολουθεί την ψευδοεντολή.end δε θα μεταφραστεί από τον assembler Προσοχή στη λεπτομέρεια: Ως ψευδοεντολή, το.end δε μεταφράζεται σε κάποια λειτουργία Δε σηματοδοτεί το τέλος/την παύση του προγράμματος Δεν υπάρχει πουθενά στον δυαδικό κώδικα που εκτελείται 15

17 Ψευδοεντολή.FILL [LABEL: optional].fill VALUE Δίνει στον assembler την οδηγία να αφήσει κενή την επόμενη θέση μνήμης στο πρόγραμμα (τη θέση μνήμης της εντολής) και να την αρχικοποιήσει με την τιμή VALUE Σε αναλογία με τη C: C Assembly LC-3 int a = 1024; a.fill #

18 Ψευδοεντολή.BLKW [LABEL: optional].blkw N Δίνει στον assembler την οδηγία να αφήσει κενές τις επόμενες N συνεχόμενες θέσεις μνήμης BLocK of Words Σε αναλογία με τη C: C Assembly LC-3 int a; a.blkw 1 int a[10]; a.blkw 10 17

19 Ψευδοεντολή.STRINGZ [LABEL: optional].stringz STRING_VALUE Δίνει στον assembler την οδηγία να αρχικοποιήσει τις επόμενες N+1 θέσεις μνήμης στο πρόγραμμα με μια συμβολοσειρά. Το όρισμα STRING_VALUE είναι η συμβολοσειρά: μια ακολουθία Ν χαρακτήρων σε εισαγωγικά. Οι πρώτες Ν θέσεις μνήμης αρχικοποιούνται με τους κωδικούς ASCII των χαρακτήρων. Η θέση N+1 αρχικοποιείται με το χαρακτήρα x0000, για να διευκολύνει την επεξεργασία της συμβολοσειράς. Σε αναλογία με τη C: C char greeting[6] = { H, e, l, l, o, \0 }; ή char greeting[] = Hello ; Assembly LC-3 greeting.stringz Hello 18

20 Παράδειγμα μνήμης με ψευδοεντολές Κώδικας σε LC-3 assembly.orig x3000 a.fill x0001 b.blkw 4 c.stringz Hello d.fill x0002 HALT.END a.fill x0001 (1 θέση μνήμης) b.blkw 4 (4 θέσεις μνήμης) c.stringz Hello (6 θέσεις μνήμης) d.fill x0001 (1 θέση μνήμης) 19

21 Συμβολομετάφραση σε 2 περάσματα Η συμβολομετάφραση γίνεται σε 2 περάσματα Εκτός από το αρχείο.obj, παράγεται και ένα αρχείο.sym Το αρχείο.sym περιλαμβάνει τον Πίνακα Συμβόλων (Symbol Table), με τις μεταφράσεις των ετικετών στις αντίστοιχες διευθύνσεις μνήμης 1 ο πέρασμα: Οι ετικέτες μεταφράζονται στις αντίστοιχες διευθύνσεις μνήμης Η μετάφραση ξεκινάει από τη θέση που υποδεικνύει η εντολή.orig Αν παρεμβάλλονται ψευδοεντολές.fill,.blkw,.stringz, οι θέσεις μνήμης που «δεσμεύουν» υπολογίζονται κατάλληλα στη μετάφραση των ετικετών σε διευθύνσεις 2 ο πέρασμα: Οι εντολές μεταφράζονται σε γλώσσα μηχανής στο δεύτερο πέρασμα, με τη βοήθεια του πίνακα συμβόλων Πρόγραμμα σε assembly (.asm) 1 ο πέρασμα 2 ο πέρασμα Εκτελέσιμο (.obj) Πίνακας Συμβόλων (.sym) 20

22 Αριθμητικές/Λογικές Εντολές του LC3 H ISA του LC-3 παρέχει τρεις μόνο αριθμητικές εντολές ADD DST, SRC1, SRC2; DST SRC1+SRC2 ADD DST, SRC1, IMM5; DST SRC1+IMM5 AND DST, SRC1, SRC2; DST SRC1 and SRC2 AND DST, SRC1, IMM5; DST SRC1 and IMM5 NOT DST, SRC; DST NOT(SRC) Imm5: Προσημασμένος αριθμός 5 bits (4 bits +1 bit προσήμου) Τι μπορούμε να κάνουμε με αυτές τις εντολές; Μπορούμε να κάνουμε τις πράξεις που λείπουν; 21

23 Αντιγραφή Καταχωρητών Αντιγραφή Καταχωρητών Μπορούμε με ΜΙΑ εντολή να αντιγράψουμε το περιεχόμενο του καταχωρητή R2 στον καταχωρητή R3; R2 x0003 R3 x

24 Αντιγραφή Καταχωρητών Αντιγραφή Καταχωρητών Μπορούμε με ΜΙΑ εντολή να αντιγράψουμε το περιεχόμενο του καταχωρητή R2 στον καταχωρητή R3; R2 x0003 R3 x0000 Λύση ADD R3, R2, #0 R2 x0003 R3 x

25 Μηδενισμός Καταχωρητή Μηδενισμός Καταχωρητή Μπορούμε με ΜΙΑ εντολή να μηδενίσουμε το περιεχόμενο του καταχωρητή R2; R2 xb4d8 24

26 Μηδενισμός Καταχωρητή Μηδενισμός Καταχωρητή Μπορούμε με ΜΙΑ εντολή να μηδενίσουμε το περιεχόμενο του καταχωρητή R2; R2 xb4d8 Λύση AND R2, R2, #0 R2 x

27 Αφαίρεση Σταθεράς Αφαίρεση σταθεράς Μπορούμε με ΜΙΑ μόνο εντολή να αφαιρέσουμε το 20 από τον καταχωρητή R1 και να αποθηκεύσουμε το αποτέλεσμα στον καταχωρητή R2; Πράξη: R2 R1-20 R1 x001α R2 x

28 Αφαίρεση Σταθεράς Αφαίρεση σταθεράς Μπορούμε με ΜΙΑ μόνο εντολή να αφαιρέσουμε το 20 από τον καταχωρητή R1 και να αποθηκεύσουμε το αποτέλεσμα στον καταχωρητή R2; Πράξη: R2 R1-20 Μπορούμε να γράψουμε: ADD R2, R1, #-20 ; ΟΧΙ! Το όρισμα IMM5 της πρόσθεσης μπορεί να πάρει τιμές από -16 ως 16! Μπορούμε όμως να το επιτύχουμε με ΔΥΟ εντολές: ADD R2,R1,#-16 R1 x001α R2 x000a 27

29 Αφαίρεση Σταθεράς Αφαίρεση σταθεράς Μπορούμε με ΜΙΑ μόνο εντολή να αφαιρέσουμε το 20 από τον καταχωρητή R1 και να αποθηκεύσουμε το αποτέλεσμα στον καταχωρητή R2; Πράξη: R2 R1-20 Μπορούμε να γράψουμε: ADD R2, R1, #-20 ; ΟΧΙ! Το όρισμα IMM5 της πρόσθεσης μπορεί να πάρει τιμές από -16 ως 16! Μπορούμε όμως να το επιτύχουμε με ΔΥΟ εντολές: ADD R2,R1,#-16 R1 x001α R2 x000a ADD R2,R2,#-4 R1 x001α R2 x

30 Αφαίρεση Αφαίρεση Πώς μπορούμε να κάνουμε αφαίρεση με τις δοσμένες εντολές; Πόσες εντολές χρειαζόμαστε; Πράξη: R3 R1 - R2 R1 x0f02 R2 X008A R3 x

31 Αφαίρεση Αφαίρεση Πώς μπορούμε να κάνουμε αφαίρεση με τις δοσμένες εντολές; Πόσες εντολές χρειαζόμαστε; Πράξη: R3 R1 - R2 R1 x0f02 R2 x008a R3 x0000 Λύση NOT R2,R2 Συμπλήρωμα ως προς 1 του αφαιρετέου R1 x0f02 R2 xff75 R3 x

32 Αφαίρεση Αφαίρεση Πώς μπορούμε να κάνουμε αφαίρεση με τις δοσμένες εντολές; Πόσες εντολές χρειαζόμαστε; Πράξη: R3 R1 - R2 R1 x0f02 R2 X008A R3 x0000 Λύση NOT R2,R2 ADD R2,R2,#1 Συμπλήρωμα ως προς 2 του αφαιρετέου R1 x0f02 R2 xff76 R3 x

33 Αφαίρεση Αφαίρεση Πώς μπορούμε να κάνουμε αφαίρεση με τις δοσμένες εντολές; Πόσες εντολές χρειαζόμαστε; Πράξη: R3 R1-R2 R1 x0f02 R2 X008A R3 x0000 Λύση NOT R2,R2 ADD R2,R2,#1 ADD R3,R1,R2 Πρόσθεση του μειωτέου και του συμπληρώματος ως προς 2 του αφαιρετέου R1 x0f02 R2 xff76 R3 x0ε78 32

34 Καταχωρητές Συνθήκης Ο LC3 παρέχει 3 καταχωρητές συνθήκης (1-bit) N, Negative Z, Zero P, Positive Κάθε φορά που μια εντολή γράφει σε έναν καταχωρητή (εντολές ADD, AND, NOT αλλά και LD, LDR, LDI, LEA), ανάλογα με το αποτέλεσμα, MONO ένας από τους τρεις καταχωρητές παίρνει την τιμή 1 Στο simulator τα δεδομένα αυτών των καταχωρητών εμφανίζονται στον καταχωρητή CC (conditional code) CC CC CC POSITIVE ZERO NEGATIVE N=0, Z=0, P=1 N=0, Z=1, P=0 N=1, Z=0, P=0 33

35 Καταχωρητές Συνθήκης Μπορούμε με ΜΙΑ μόνο εντολή να θέσουμε τον καταχωρητή συνθήκης ανάλογα με την τιμή του καταχωρητή R1; 34

36 Καταχωρητές Συνθήκης Μπορούμε με ΜΙΑ μόνο εντολή να θέσουμε τον καταχωρητή συνθήκης ανάλογα με την τιμή του καταχωρητή R1; Λύση Ο καταχωρητής συνθήκης τίθεται με βάση την τελευταία εντολή που έγραψε σε καταχωρητή Πρέπει να εκτελέσουμε μία εντολή, που να γράφει στον καταχωρητή R1, χωρίς να μεταβάλει το περιεχόμενό του! ADD R1,R1,#0 35

37 Εντολές Ελέγχου Ροής του LC-3 Το ISA του LC-3 παρέχει δύο εντολές αλμάτων JMP BaseR BR{n z p} LABEL H εντολή JMP εκτελεί άλμα χωρίς συνθήκη Θα συμβεί οπωσδήποτε άλμα στο σημείο όπου PC=BaseR H εντολή BR εκτελεί άλμα υπό συνθήκη Συνδυάζεται με τους καταχωρητές συνθήκης Αν κάποιος από τους επιλεγμένους καταχωρητές είναι 1 (ικανοποιεί τη συνθήκη) θα συμβεί άλμα στη διεύθυνση με ετικέτα LABEL Με την εντολή BR μπορούμε να γράψουμε συνθήκες τύπου if-thenelse 36

38 Εντολή BR και καταχωρητές συνθήκης Η εντολή BR συνδυάζεται με τους καταχωρητές συνθήκης Σε αναλογία με τη C: Λογική έκφραση στη C Αριθμητική Έκφραση Εντολή BRanch σε LC3 if (a < b) if ((a - b) < 0) BRn if (a <= b) if ((a - b) <= 0) BRnz if (a == b) if ((a - b) == 0) BRz if (a >= b) if ((a - b) >= 0) BRzp if (a > b) if ((a - b) > 0) BRp if (a!= b) if ((a - b)!= 0) BRnp if (a) if (a!= 0) BRnp if (! a) if (a == 0) BRz 37

39 Δομή if-then Δομή if-then Κώδικας σε C: if (a < b) { //do something } Κώδικας σε LC-3 assembly LD R0, a LD R1, b NOT R1, R1 ADD R1, R1, #1 ADD R0, R0, R1 BRzp SKIP ; Έλεγχος συνθήκης ; do something SKIP 38

40 Παράδειγμα if-then (Περίπτωση 1) Περίπτωση 1: a=4, b=5, a<b R0 x0000 R1 x0000 CC ZERO LD R0, a; LD R1, b; NOT R1, R1; ADD R1, R1, #1; ADD R0, R0, R1; BRzp SKIP; SKIP Φόρτωσε τον a στον καταχωρητή R0 R0 x0004 R1 x0000 CC POSITIVE 39

41 Παράδειγμα if-then (Περίπτωση 1) Περίπτωση 1: a=4, b=5, a<b R0 x0004 R1 x0000 CC POSITIVE LD R0, a; LD R1, b; NOT R1, R1; ADD R1, R1, #1; ADD R0, R0, R1; BRzp SKIP; SKIP Φόρτωσε τον a στον καταχωρητή R0 Φόρτωσε τον b στον καταχωρητή R1 R0 x0004 R1 x0005 CC POSITIVE 40

42 Παράδειγμα if-then (Περίπτωση 1) Περίπτωση 1: a=4, b=5, a<b R0 x0004 R1 x0005 CC POSITIVE LD R0, a; LD R1, b; NOT R1, R1; ADD R1, R1, #1; ADD R0, R0, R1; BRzp SKIP; SKIP Φόρτωσε τον a στον καταχωρητή R0 Φόρτωσε τον b στον καταχωρητή R1 Αφαίρεση: Συμπλήρωμα ως προς 1 του R1 R0 x0004 R1 xfffa CC NEGATIVE 41

43 Παράδειγμα if-then (Περίπτωση 1) Περίπτωση 1: a=4, b=5, a<b R0 x0004 R1 xfffa CC NEGATIVE LD R0, a; LD R1, b; NOT R1, R1; ADD R1, R1, #1; ADD R0, R0, R1; BRzp SKIP; SKIP Φόρτωσε τον a στον καταχωρητή R0 Φόρτωσε τον b στον καταχωρητή R1 Αφαίρεση: Συμπλήρωμα ως προς 1 του R1 Αφαίρεση: Συμπλήρωμα ως προς 2 του R1 R0 x0004 R1 xfffb CC NEGATIVE 42

44 Παράδειγμα if-then (Περίπτωση 1) Περίπτωση 1: a=4, b=5, a<b R0 x0004 R1 xfffb CC NEGATIVE LD R0, a; LD R1, b; NOT R1, R1; ADD R1, R1, #1; ADD R0, R0, R1; BRzp SKIP; SKIP Φόρτωσε τον a στον καταχωρητή R0 Φόρτωσε τον b στον καταχωρητή R1 Αφαίρεση: Συμπλήρωμα ως προς 1 του R1 Αφαίρεση: Συμπλήρωμα ως προς 2 του R1 Αφαίρεση: R0=R0+Συμπλήρωμα2(R1) R0 xffff R1 xfffb CC NEGATIVE 43

45 Παράδειγμα if-then (Περίπτωση 1) Περίπτωση 1: a=4, b=5, a<b R0 xffff R1 xfffb CC NEGATIVE LD R0, a; LD R1, b; NOT R1, R1; ADD R1, R1, #1; ADD R0, R0, R1; BRzp SKIP; SKIP Φόρτωσε τον a στον καταχωρητή R0 Φόρτωσε τον b στον καταχωρητή R1 Αφαίρεση: Συμπλήρωμα ως προς 1 του R1 Αφαίρεση: Συμπλήρωμα ως προς 2 του R1 Αφαίρεση: R0=R0+(-R1) Έλεγχος: Αν CC=Z P πήγαινε στο SKIP BRzp: Ελέγχει αν Ζ=1 ή P=1 Αν Ζ=1 ή P=1 θα γίνει άλμα στη θέση με ετικέτα SKIP Αν όχι, δε θα γίνει άλμα Δε θα γίνει άλμα! 44

46 Παράδειγμα if-then (Περίπτωση 1) Περίπτωση 1: a=4, b=5, a<b R0 xffff R1 xfffb CC NEGATIVE LD R0, a; LD R1, b; NOT R1, R1; ADD R1, R1, #1; ADD R0, R0, R1; BRzp SKIP; SKIP Φόρτωσε τον a στον καταχωρητή R0 Φόρτωσε τον b στον καταχωρητή R1 Αφαίρεση: Συμπλήρωμα ως προς 1 του R1 Αφαίρεση: Συμπλήρωμα ως προς 2 του R1 Αφαίρεση: R0=R0+Συμπλήρωμα2(R1) Έλεγχος: Αν CC=Z P πήγαινε στο SKIP Συνθήκη αληθής (a<b): συνέχεια εκτέλεσης από την επόμενη θέση 45

47 Παράδειγμα if-then (Περίπτωση 2) Περίπτωση 2: a=5, b=4, a>b R0 x0005 R1 xfffc CC NEGATIVE LD R0, a; LD R1, b; NOT R1, R1; ADD R1, R1, #1; ADD R0, R0, R1; BRzp SKIP; SKIP Φόρτωσε τον a στον καταχωρητή R0 Φόρτωσε τον b στον καταχωρητή R1 Αφαίρεση: Συμπλήρωμα ως προς 1 του R1 Αφαίρεση: Συμπλήρωμα ως προς 2 του R1 Αφαίρεση: R0=R0+Συμπλήρωμα2(R1) R0 x0001 R1 xfffb CC POSITIVE 46

48 Παράδειγμα if-then (Περίπτωση 2) Περίπτωση 2: a=5, b=4, a>b R0 X0001 R1 xfffc CC POSITIVE LD R0, a; LD R1, b; NOT R1, R1; ADD R1, R1, #1; ADD R0, R0, R1; BRzp SKIP; SKIP Φόρτωσε τον a στον καταχωρητή R0 Φόρτωσε τον b στον καταχωρητή R1 Αφαίρεση: Συμπλήρωμα ως προς 1 του R1 Αφαίρεση: Συμπλήρωμα ως προς 2 του R1 Αφαίρεση: R0=R0+Συμπλήρωμα2(R1) Έλεγχος: Αν CC=Z P πήγαινε στο SKIP BRzp: Ελέγχει αν Ζ=1 ή P=1 Αν Ζ=1 ή P=1 θα γίνει άλμα στη θέση με ετικέτα SKIP Αν όχι, δε θα γίνει άλμα Θα γίνει άλμα! 47

49 Παράδειγμα if-then (Περίπτωση 2) Περίπτωση 2: a=5, b=4, a>b R0 xffff R1 xfffb CC NEGATIVE LD R0, a; LD R1, b; NOT R1, R1; ADD R1, R1, #1; ADD R0, R0, R1; BRzp SKIP; SKIP Φόρτωσε τον a στον καταχωρητή R0 Φόρτωσε τον b στον καταχωρητή R1 Αφαίρεση: Συμπλήρωμα ως προς 1 του R1 Αφαίρεση: Συμπλήρωμα ως προς 2 του R1 Αφαίρεση: R0=R0+(-R1) Έλεγχος: Αν CC=Z P πήγαινε στο SKIP Συνθήκη ψευδής (a>b): συνέχεια εκτέλεσης από τη θέση με ετικέτα SKIP 48

50 Δομή if-then-else Δομή if-then-else Κώδικας σε C: if (a<b) { //do something } else { //do something else } Κώδικας σε LC-3 assembly LD R0, a LD R1, b NOT R1, R1 ADD R1, R1, #1 ADD R0, R0, R1 BRzp ELSE ; Έλεγχος συνθήκης ; do something BR END_ELSE ; Άλμα στο END_ELSE ELSE ; do something else END ELSE 49

51 For loop Η παραδοσιακή μορφή της δομής loop απαιτεί 4 τμήματα Initialization: Ορισμός και αρχικοποίηση των απαιτούμενων μεταβλητών Condition: Όσο είναι αληθής θα επαναλαμβάνεται το σώμα του FOR Afterthought: Εκτελείται μετά το τέλος του σώματος του FOR Body: Ο κώδικας που θα εκτελείται σε κάθε επανάληψη for (initialization; condition; afterthought) {body} 50

52 For loop Initialization No Condition Body Yes Afterthought END 51

53 While loop No Condition Body Yes END 52

54 Παράδειγμα For loop 1 Πολλαπλασιασμός 1/3 for (i = 8, a = 0; 0 < i; i--, a += 10) {} a = 0; for ( i = 8; 0 < i; i = i - 1){ a = a +10 } Initialization: i = 8, a = 0 Condition: 0 < i Body: a = a + 10 Afterthought: i = i

55 Παράδειγμα For loop 1 Πολλαπλασιασμός 2/3 ; initialization AND R1, R1, x0 ; Εκκαθάριση καταχωρητή R1 ( a = 0) AND R0, R0, x0 ; Εκκαθάριση καταχωρητή R0 ( i = 0) ADD R0, R0, x08 ; Προσθήκη στον καταχωρητή ( i = 8) LOOP ; condition BRnz LOOPEND ; Έλεγχος αν i είναι θετικός ; body ADD R1, R1, #10 ; Προσθήκη στον καταχωρητή R1 (a +=10) ; afterthought ADD R0, R0, #-1 ; Αφαίρεση από καταχωρητή R1 (i --) BR LOOP LOOPEND 54

56 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Αρχικές συνθήκες (τυχαίες) R0: x0f38 R1: x00ff PC: x2fff CC: NEGATIVE x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 55

57 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0f38 R1: x00ff LOOP: - PC: x3001 CC: ZERO x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 56

58 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0000 R1: x0000 LOOP: - PC: x3002 CC: ZERO x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 57

59 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0008 R1: x0000 LOOP: - PC: x3003 CC: POSITIVE x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 58

60 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0008 R1: x0000 LOOP: 1 PC: x3004 CC: POSITIVE x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 59

61 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0008 R1: x000α LOOP: 1 PC: x3005 CC: POSITIVE x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 60

62 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0007 R1: x000α LOOP: 1 PC: x3006 CC: POSITIVE x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 ΒR LOOP LOOPEND 61

63 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0007 R1: x000a LOOP: 1 PC: x3003 CC: POSITIVE x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 62

64 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0007 R1: x000a LOOP: 2 PC: x3004 CC: POSITIVE x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 63

65 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0007 R1: x0014 LOOP: 2 PC: x3005 CC: POSITIVE x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 64

66 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0006 R1: x0014 LOOP: 2 PC: x3006 CC: POSITIVE x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 65

67 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0006 R1: x0014 LOOP: 2 PC: x3003 CC: POSITIVE x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 66

68 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0001 R1: x0046 LOOP: 8 PC: x3004 CC: POSITIVE x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 67

69 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0001 R1: x0050 LOOP: 8 PC: x3005 CC: POSITIVE x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 68

70 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0000 R1: x0050 LOOP: 8 PC: x3006 CC: ZERO x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 69

71 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0000 R1: x0050 LOOP: 8 PC: x3003 CC: ZERO x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 70

72 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0000 R1: x0050 LOOP: 8 PC: x3007 CC: ZERO x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 71

73 Παράδειγμα For loop 1 Πολλαπλασιασμός 3/3 Τρέχουσες τιμές R0: x0000 R1: x0050 LOOP: 8 PC: x3007 CC: ZERO x3000 AND R1, R1, x0 x3001 AND R0, R0, x0 x3002 ADD R0, R0, x08 LOOP x3003 BRnz LOOPEND x3004 ADD R1, R1, #10 x3005 ADD R0, R0, #-1 x3006 BR LOOP LOOPEND 72

74 Σύνοψη των εντολών του LC3 ADD Dst, Src1, Src2 ADD Dst, Src1, imm5 AND Dst, Src1, Src2 AND Dst, Src1, imm5 NOT Dst, Src LD Dst, LABEL ST Src, LABEL LDR Dst, BaseR, offset6 STR Src, BaseR, offset6 LDI Dst, LABEL STI Src, LABEL LEA Dst, LABEL JMP BaseR BR[nzp] LABEL JSR LABEL JSRR BaseR RET TRAP trapvector8 RTI 73

75 Μνήμη Πίνακες Γενικά Η μνήμη (mem) αποτελείται από συνεχόμενες θέσεις Το πρώτο στοιχείο της μνήμης είναι το 0 Το πρόγραμμα βρίσκεται και αυτό στην μνήμη Παράδειγμα Τα δεδομένα του πρώτου στοιχείου είναι mem[0] = 12 Ποια είναι η τιμή mem[mem[6]]? Θέση Δεδομένα 0x x x x x x x x x x x000A 11 74

76 Μνήμη Πίνακες Εντολές LC3 Εντολές ανάγνωσης μνήμης LD Ανάγνωση με Offset στον PC (±256 θέσεις) LDI Ανάγνωση με έμμεση πρόσβαση LDR Ανάγνωση με Offset σε Καταχωρητή (± 16 θέσεις) LEA Ανάγνωση διεύθυνσης σε Καταχωρητή Εντολές εγγραφής μνήμης ST Εγγραφή μνήμης με Offset στον PC (±256 θέσεις) STI Εγγραφή με έμμεση πρόσβαση STR Εγγραφή με Offset σε Καταχωρητή (± 16 θέσεις) 75

77 Μνήμη Πίνακες Εντολές LC3 Rules of thumb Εντολές ανάγνωσης μνήμης LD Ανάγνωση δεδομένων κοντά στον PC LDI Ανάγνωση δεδομένων μακρυά από τον PC με χρήση δείκτη LDR Ανάγνωση δεδομένων μακρυά από τον PC με χρήση δείκτη και αξιοποίηση του offset LEA Ανάγνωση διεύθυνσης σε Καταχωρητή Εντολές εγγραφής μνήμης ST Aνάλογα με LD STI Ανάλογα με STI STR Ανάλογα με LDR 76

78 Μνήμη Πίνακες Εντολές LC3 Δέντρο απόφασης για χρήση εντολών μνήμης (ανάγνωση ανάλογα για εγγραφή) LDR NAI Χρειάζομαι αριθμητική pointers? π.χ. πίνακες, structs OXI LD NAI Η θέση μνήμης είναι κοντά; OXI LDI 77

79 Μνήμη Πίνακες LD, ST - Παράδειγμα.ORIG 0x3000 LD R0, FIRST LD R1, SCND ADD R0, R0, R1 ST R0, RES FIRST.FILL #10 SCND.FILL #10 RES.BLKW 1.END 0x3000 LD R0, PC + 3 0x3001 LD R1, PC + 3 0x3002 ADD R0, R0, R1 0x3003 ST R1, PC + 2 0x3004 0x000A 0x3005 0x000A 0x

80 Μνήμη Πίνακες LD, ST - Παράδειγμα.ORIG 0x3000 LD R0, FIRST LD R1, SCND ADD R0, R0, R1 ST R0, RES FIRST.FILL #10 SCND.FILL #10 RES.BLKW 1.END 0x3000 LD R0, PC + 3 0x3001 LD R1, PC + 3 0x3002 ADD R0, R0, R1 0x3003 ST R1, PC + 2 0x3004 0x000A 0x3005 0x000A 0x C code first = 10; second = 10; result = first + second; 79

81 Παράδειγμα χρήσης LD.ORIG x3000 LD R0, X HALT ; ARRAY.BLKW 128 X.FILL x0007 ;.END 80

82 Παράδειγμα χρήσης LD.ORIG x3000 LD R0, X HALT ; ARRAY.BLKW 128 X.FILL x0007 ;.END OK 81

83 Παράδειγμα χρήσης LD.ORIG x3000 LD R0, X HALT ; ARRAY.BLKW 255 X.FILL x0007 ;.END 82

84 Παράδειγμα χρήσης LD.ORIG x3000 LD R0, X HALT ; ARRAY.BLKW 255 X.FILL x0007 ;.END STARTING PASS 1 0 errors found in first pass. STARTING PASS 2 2: label "X" at distance 256 (allowed range is -256 to 255) 1 errors found in second pass. 83

85 Μνήμη Πίνακες LDI, STI - Παράδειγμα.ORIG 0x3000 LDI R0, F_P LDI R1, S_P ADD R0, R0, R1 STI R0, R_P F_P.FILL FIRST S_P.FILL SCND R_P.FILL RES HALT ARRAY.BLKW #300 FIRST.FILL #10 SCND.FILL #10 RES.BLKW 1.END 0x3000 LDI R0, PC + 3 0x3001 LD R1, PC + 3 0x3002 ADD R0, R0, R1 0x3003 STI R1, PC + 2 0x3004 0x3134 0x3005 0x3135 0x3006 0x3136 0x3007 HALT 0x3008 0x3134 0x000A 0x3135 0x000A 0x3136 0x

86 Μνήμη Πίνακες LDR, STR, LEA Παράδειγμα: Άθροισμα μιγαδικών.orig x3000 LEA R5, COMPLEX1 ; R5 = &COMPLEX1 LEA R6, COMPLEX2 ; R6 = &COMPLEX2 LEA R7, SUM ; R7 = &SUM TRAP x23 ; initialize from input real STR R0, R5, #0 ; part of complex1 TRAP x23 ; initialize from input STR R0, R5, #1 ; imaginary part of complex1 TRAP x23 ; initialize from input real STR R0, R6, #0 ; part of complex2 TRAP x23 ; initialize from input STR R0, R6, #1 ; imaginary part of complex2 LDR R0, R5, #0 ; addition of real parts LDR R1, R6, #0 ADD R0, R0, R1 STR R0, R7, #0 LDR R0, R5, #1 ; addition of imaginary parts LDR R1, R6, #1 ADD R0, R0, R1 STR R0, R7, #1 HALT COMPLEX1.BLKW 2 COMPLEX2.BLKW 2 SUM.BLKW 2.END 85

87 Μνήμη Πίνακες LDR, STR, LEA Παράδειγμα: Άθροισμα μιγαδικών.orig x3000 LEA R5, COMPLEX1 ; R5 = &COMPLEX1 LEA R6, COMPLEX2 ; R6 = &COMPLEX2 LEA R7, SUM ; R7 = &SUM TRAP x23 ; initialize from input real STR R0, R5, #0 ; part of complex1 TRAP x23 ; initialize from input STR R0, R5, #1 ; imaginary part of complex1 TRAP x23 ; initialize from input real STR R0, R6, #0 ; part of complex2 TRAP x23 ; initialize from input STR R0, R6, #1 ; imaginary part of complex2 LDR R0, R5, #0 ; addition of real parts LDR R1, R6, #0 ADD R0, R0, R1 STR R0, R7, #0 LDR R0, R5, #1 ; addition of imaginary parts LDR R1, R6, #1 ADD R0, R0, R1 STR R0, R7, #1 HALT COMPLEX1.BLKW 2 COMPLEX2.BLKW 2 SUM.BLKW 2.END 86

88 Μνήμη Πίνακες LDR, STR, LEA Παράδειγμα: Άθροισμα μιγαδικών.orig x3000 LEA R5, COMPLEX1 ; R5 = &COMPLEX1 LEA R6, COMPLEX2 ; R6 = &COMPLEX2 LEA R7, SUM ; R7 = &SUM TRAP x23 ; initialize from input real STR R0, R5, #0 ; part of complex1 TRAP x23 ; initialize from input STR R0, R5, #1 ; imaginary part of complex1 TRAP x23 ; initialize from input real STR R0, R6, #0 ; part of complex2 TRAP x23 ; initialize from input STR R0, R6, #1 ; imaginary part of complex2 LDR R0, R5, #0 ; addition of real parts LDR R1, R6, #0 ADD R0, R0, R1 STR R0, R7, #0 LDR R0, R5, #1 ; addition of imaginary parts LDR R1, R6, #1 ADD R0, R0, R1 STR R0, R7, #1 HALT COMPLEX1.BLKW 2 COMPLEX2.BLKW 2 SUM.BLKW 2.END 87

89 Μνήμη Πίνακες LDR, STR, LEA Παράδειγμα: Άθροισμα μιγαδικών.orig x3000 LEA R5, COMPLEX1 ; R5 = &COMPLEX1 LEA R6, COMPLEX2 ; R6 = &COMPLEX2 LEA R7, SUM ; R7 = &SUM TRAP x23 ; initialize from input real STR R0, R5, #0 ; part of complex1 TRAP x23 ; initialize from input STR R0, R5, #1 ; imaginary part of complex1 TRAP x23 ; initialize from input real STR R0, R6, #0 ; part of complex2 TRAP x23 ; initialize from input STR R0, R6, #1 ; imaginary part of complex2 LDR R0, R5, #0 ; addition of real parts LDR R1, R6, #0 ADD R0, R0, R1 STR R0, R7, #0 LDR R0, R5, #1 ; addition of imaginary parts LDR R1, R6, #1 ADD R0, R0, R1 STR R0, R7, #1 HALT COMPLEX1.BLKW 2 COMPLEX2.BLKW 2 SUM.BLKW 2.END 88

90 Μνήμη Πίνακες LDR, STR, LEA Παράδειγμα: Άθροισμα μιγαδικών.orig x3000 LEA R5, COMPLEX1 ; R5 = &COMPLEX1 LEA R6, COMPLEX2 ; R6 = &COMPLEX2 LEA R7, SUM ; R7 = &SUM TRAP x23 ; initialize from input real STR R0, R5, #0 ; part of complex1 TRAP x23 ; initialize from input STR R0, R5, #1 ; imaginary part of complex1 TRAP x23 ; initialize from input real STR R0, R6, #0 ; part of complex2 TRAP x23 ; initialize from input STR R0, R6, #1 ; imaginary part of complex2 LDR R0, R5, #0 ; addition of real parts LDR R1, R6, #0 ADD R0, R0, R1 STR R0, R7, #0 LDR R0, R5, #1 ; addition of imaginary parts LDR R1, R6, #1 ADD R0, R0, R1 STR R0, R7, #1 HALT COMPLEX1.BLKW 2 COMPLEX2.BLKW 2 SUM.BLKW 2.END 89

91 Μνήμη Πίνακες Προσπέλαση πίνακα int i, a[10]; for (i = 0; i < 10; i++){ a[i] = i; } AND R0, R0, x0 ST R0, I ; i = 0 LOOP LD R0, I ; R0 = i LD R1, LIM ; R1 = LIM (= 10) NOT R1, R1 ; ADD R1, R1, #1 ; R1 = -10 ADD R0, R0, R1 ; i - 10 < 0? BRzp END LEA R0, A ; R0 = address of A LD R1, I ; R1 = i ADD R0, R0, R1 ; R0 = address of A[i]; STR R1, R0, #0 ; A[i] = i; ADD R1, R1, x1 ; i++ ST R1, I ; BR LOOP END HALT I.BLKW #1 ; loop variable i LIM.FILL 10 ; loop limit (10) A.BLKW #10 90

92 Μνήμη Πίνακες Προσπέλαση πίνακα int i, a[10]; for (i = 0; i < 10; i++){ a[i] = i; } AND R0, R0, x0 ST R0, I ; i = 0 LOOP LD R0, I ; R0 = i LD R1, LIM ; R1 = LIM (= 10) NOT R1, R1 ; ADD R1, R1, #1 ; R1 = -10 ADD R0, R0, R1 ; i - 10 < 0? BRzp END LEA R0, A ; R0 = address of A LD R1, I ; R1 = i ADD R0, R0, R1 ; R0 = address of A[i]; STR R1, R0, #0 ; A[i] = i; ADD R1, R1, x1 ; i++ ST R1, I ; BR LOOP END HALT I.BLKW #1 ; loop variable i LIM.FILL 10 ; loop limit (10) A.BLKW #10 91

93 Μνήμη Πίνακες Προσπέλαση πίνακα int i, a[10]; for (i = 0; i < 10; i++){ a[i] = i; } AND R0, R0, x0 ST R0, I ; i = 0 LOOP LD R0, I ; R0 = i LD R1, LIM ; R1 = LIM (= 10) NOT R1, R1 ; ADD R1, R1, #1 ; R1 = -10 ADD R0, R0, R1 ; i - 10 < 0? BRzp END LEA R0, A ; R0 = address of A LD R1, I ; R1 = i ADD R0, R0, R1 ; R0 = address of A[i]; STR R1, R0, #0 ; A[i] = i; ADD R1, R1, x1 ; i++ ST R1, I ; BR LOOP END HALT I.BLKW #1 ; loop variable i LIM.FILL 10 ; loop limit (10) A.BLKW #10 92

94 Μνήμη Πίνακες Προσπέλαση πίνακα int i, a[10]; for (i = 0; i < 10; i++){ a[i] = i; } AND R0, R0, x0 ST R0, I ; i = 0 LOOP LD R0, I ; R0 = i LD R1, LIM ; R1 = LIM (= 10) NOT R1, R1 ; ADD R1, R1, #1 ; R1 = -10 ADD R0, R0, R1 ; i - 10 < 0? BRzp END LEA R0, A ; R0 = address of A LD R1, I ; R1 = i ADD R0, R0, R1 ; R0 = address of A[i]; STR R1, R0, #0 ; A[i] = i; ADD R1, R1, x1 ; i++ ST R1, I ; BR LOOP END HALT I.BLKW #1 ; loop variable i LIM.FILL 10 ; loop limit (10) A.BLKW #10 93

95 Μνήμη Πίνακες Προσπέλαση πίνακα int i, a[10]; for (i = 0; i < 10; i++){ a[i] = i; } AND R0, R0, x0 ST R0, I ; i = 0 LOOP LD R0, I ; R0 = i LD R1, LIM ; R1 = LIM (= 10) NOT R1, R1 ; ADD R1, R1, #1 ; R1 = -10 ADD R0, R0, R1 ; i - 10 < 0? BRzp END LEA R0, A ; R0 = address of A LD R1, I ; R1 = i ADD R0, R0, R1 ; R0 = address of A[i]; STR R1, R0, #0 ; A[i] = i; ADD R1, R1, x1 ; i++ ST R1, I ; BR LOOP END HALT I.BLKW #1 ; loop variable i LIM.FILL 10 ; loop limit (10) A.BLKW #10 94

96 Μνήμη Πίνακες Προσπέλαση πίνακα int i, a[10]; for (i = 0; i < 10; i++){ a[i] = i; } AND R0, R0, x0 ST R0, I ; i = 0 LOOP LD R0, I ; R0 = i LD R1, LIM ; R1 = LIM (= 10) NOT R1, R1 ; ADD R1, R1, #1 ; R1 = -10 ADD R0, R0, R1 ; i - 10 < 0? BRzp END LEA R0, A ; R0 = address of A LD R1, I ; R1 = i ADD R0, R0, R1 ; R0 = address of A[i]; STR R1, R0, #0 ; A[i] = i; ADD R1, R1, x1 ; i++ ST R1, I ; BR LOOP END HALT I.BLKW #1 ; loop variable i LIM.FILL 10 ; loop limit (10) A.BLKW #10 95

97 Μνήμη Πίνακες Προσπέλαση πίνακα int i, a[10]; for (i = 0; i < 10; i++){ a[i] = i; } AND R0, R0, x0 ST R0, I ; i = 0 LOOP LD R0, I ; R0 = i LD R1, LIM ; R1 = LIM (= 10) NOT R1, R1 ; ADD R1, R1, #1 ; R1 = -10 ADD R0, R0, R1 ; i - 10 < 0? BRzp END LEA R0, A ; R0 = address of A LD R1, I ; R1 = i ADD R0, R0, R1 ; R0 = address of A[i]; STR R1, R0, #0 ; A[i] = i; ADD R1, R1, x1 ; i++ ST R1, I ; BR LOOP END HALT I.BLKW #1 ; loop variable i LIM.FILL 10 ; loop limit (10) A.BLKW #10 96

98 Μνήμη Πίνακες Προσπέλαση πίνακα int i, a[10]; for (i = 0; i < 10; i++){ a[i] = i; } AND R0, R0, x0 ST R0, I ; i = 0 LOOP LD R0, I ; R0 = i LD R1, LIM ; R1 = LIM (= 10) NOT R1, R1 ; ADD R1, R1, #1 ; R1 = -10 ADD R0, R0, R1 ; i - 10 < 0? BRzp END LEA R0, A ; R0 = address of A LD R1, I ; R1 = i ADD R0, R0, R1 ; R0 = address of A[i]; STR R1, R0, #0 ; A[i] = i; label "A" at distance 309 (allowed range is -256 to 255) END ADD R1, R1, x1 ; i++ ST R1, I ; BR LOOP HALT I.BLKW #1 ; loop variable i LIM.FILL 10 ; loop limit (10) B.BLKW #300 A.BLKW #10 97

99 Μνήμη Πίνακες Προσπέλαση πίνακα int i, a[10]; for (i = 0; i < 10; i++){ a[i] = i; } AND R0, R0, x0 ST R0, I ; i = 0 LOOP LD R0, I ; R0 = i LD R1, LIM ; R1 = LIM (= 10) NOT R1, R1 ; ADD R1, R1, #1 ; R1 = -10 ADD R0, R0, R1 ; i - 10 < 0? BRzp END LD R0, A_P ; R0 = address of A LD R1, I ; R1 = i ADD R0, R0, R1 ; R0 = address of A[i]; STR R1, R0, #0 ; A[i] = i; ADD R1, R1, x1 ; i++ ST R1, I ; BR LOOP END HALT I.BLKW #1 ; loop variable i LIM.FILL 10 ; loop limit (10) A_P.FILL A B.BLKW #300 A.BLKW #10 98

100 Υπορουτίνες Ομάδες εντολών που εκτελούν μια συγκεκριμένη εργασία ή που επαναλαμβάνονται συχνά Βρίσκονται έξω από το σώμα του κυρίως προγράμματος και καλούνται από αυτό Ο κώδικας γίνεται πιο ευανάγνωστος Αποφεύγονται λάθη λόγω αντιγραφής Ο κώδικας διορθώνεται ή τροποποιείται με ευκολία 99

101 Υπορουτίνες Η κλήση μιας υπορουτίνας γίνεται με τις εντολές JSR PCOffset11 Πηγαίνει σε σχετική με τον PC διεύθυνση Η τιμή που είχε ο PC πριν την κλήση μπαίνει στον R7 JSRR BaseR Πηγαίνει στην διεύθυνση που έχει ο Register Η τιμή που είχε ο PC πριν την κλήση μπαίνει στον R7 Η επιστροφή από μια υπορουτίνα στην κανονική ροή γίνεται με την εντολή RET ή εναλλακτικά με την JMP R7 γιατί? 100

102 Υπορουτίνες Παράδειγμα 1.ORIG 0x3002 ADDITION ADD R2, R0, R1 RET LD R0, FIRST LD R1, SECOND JSR ADDITION FIRST.FILL, #10 SECOND.FILL, #32 101

103 Υπορουτίνες Παράδειγμα 1 0x3000 ADD R2, R0, R1 0x3001 RET 0x3002 LD R0, PC + 4 0x3003 LD R1, PC + 4 0x3004 JSR PC - 5 0x3005.FILL, #10 0x3006.FILL, #32 Register Value R0 10 R1 0 R2 0 R7 0 PC 0x

104 Υπορουτίνες Παράδειγμα 1 0x3000 ADD R2, R0, R1 0x3001 RET 0x3002 LD R0, PC + 4 0x3003 LD R1, PC + 4 0x3004 JSR PC - 5 0x3005.FILL, #10 0x3006.FILL, #32 Register Value R0 10 R1 32 R2 0 R7 0 PC 0x

105 Υπορουτίνες Παράδειγμα 1 0x3000 ADD R2, R0, R1 0x3001 RET 0x3002 LD R0, PC + 4 0x3003 LD R1, PC + 4 0x3004 JSR PC 5 0x3005.FILL, #10 0x3006.FILL, #32 Register Value R0 10 R1 32 R2 0 R7 0x3005 PC 0x

106 Υπορουτίνες Παράδειγμα 1 0x3000 ADD R2, R0, R1 0x3001 RET 0x3002 LD R0, PC + 4 0x3003 LD R1, PC + 4 0x3004 JSR PC - 5 0x3005.FILL, #10 0x3006.FILL, #32 Register Value R0 10 R1 32 R2 42 R7 0x3005 PC 0x

107 Υπορουτίνες Παράδειγμα 1 0x3000 ADD R2, R0, R1 0x3001 RET 0x3002 LD R0, PC + 4 0x3003 LD R1, PC + 4 0x3004 JSR PC - 5 0x3005.FILL, #10 0x3006.FILL, #32 Register Value R0 10 R1 32 R2 42 R7 0x3005 PC 0x

108 Υπορουτίνες Παράδειγμα 2 - Πολλαπλασιασμός.ORIG x3000 TRAP X23 ADD R1, R0, #0 TRAP X23 JSR MULT ADD R0, R2, #0 TRAP X21 HALT ; receives input from keyboard ; copies to register R1 ; receives input from keyboard ; jump to subroutine ; output to console ; subroutine MULT: receives in R0, R1 the two numbers to be multiplied ; returns the product in R2 MULT AND R2, R2, #0 ; initialization: R2 (partial product, sum) = 0 ADD R1, R1, #0 ; refresh CC status for loop counter R1 LOOP BRnz LEND ADD R2, R2, R0 ; R2 (sum += R0) ADD R1, R1, #-1 ; BR LOOP LEND RET.END 107

109 Υπορουτίνες Παράδειγμα 2 - Πολλαπλασιασμός.ORIG x3000 TRAP X23 ADD R1, R0, #0 TRAP X23 JSR MULT ADD R0, R2, #0 TRAP X21 HALT ; receives input from keyboard ; copies to register R1 ; receives input from keyboard ; jump to subroutine ; output to console ; subroutine MULT: receives in R0, R1 the two numbers to be multiplied ; returns the product in R2 MULT AND R2, R2, #0 ; initialization: R2 (partial product, sum) = 0 ADD R1, R1, #0 ; refresh CC status for loop counter R1 LOOP BRnz LEND ADD R2, R2, R0 ; R2 (sum += R0) ADD R1, R1, #-1 ; BR LOOP LEND RET.END 108

110 Υπορουτίνες Παράδειγμα 2 - Πολλαπλασιασμός.ORIG x3000 TRAP X23 ADD R1, R0, #0 TRAP X23 JSR MULT ADD R0, R2, #0 TRAP X21 HALT ; receives input from keyboard ; copies to register R1 ; receives input from keyboard ; jump to subroutine ; output to console ; subroutine MULT: receives in R0, R1 the two numbers to be multiplied ; returns the product in R2 MULT AND R2, R2, #0 ; initialization: R2 (partial product, sum) = 0 ADD R1, R1, #0 ; refresh CC status for loop counter R1 LOOP BRnz LEND ADD R2, R2, R0 ; R2 (sum += R0) ADD R1, R1, #-1 ; BR LOOP LEND RET.END 109

111 Υπορουτίνες Παράδειγμα 2 - Πολλαπλασιασμός.ORIG x3000 TRAP X23 ADD R1, R0, #0 TRAP X23 JSR MULT ADD R0, R2, #0 TRAP X21 HALT ; receives input from keyboard ; copies to register R1 ; receives input from keyboard ; jump to subroutine ; output to console ; subroutine MULT: receives in R0, R1 the two numbers to be multiplied ; returns the product in R2 MULT AND R2, R2, #0 ; initialization: R2 (partial product, sum) = 0 ADD R1, R1, #0 ; refresh CC status for loop counter R1 LOOP BRnz LEND ADD R2, R2, R0 ; R2 (sum += R0) ADD R1, R1, #-1 ; BR LOOP LEND RET.END 110

112 Υπορουτίνες Παράδειγμα 2 - Πολλαπλασιασμός.ORIG x3000 TRAP X23 ADD R1, R0, #0 TRAP X23 JSR MULT ADD R0, R2, #0 TRAP X21 HALT ; receives input from keyboard ; copies to register R1 ; receives input from keyboard ; jump to subroutine ; output to console ; subroutine MULT: receives in R0, R1 the two numbers to be multiplied ; returns the product in R2 MULT AND R2, R2, #0 ; initialization: R2 (partial product, sum) = 0 ADD R1, R1, #0 ; refresh CC status for loop counter R1 LOOP BRnz LEND ADD R2, R2, R0 ; R2 (sum += R0) ADD R1, R1, #-1 ; BR LOOP LEND RET.END 111

113 Υπορουτίνες Παράδειγμα 2 - Πολλαπλασιασμός.ORIG x3000 TRAP X23 ADD R1, R0, #0 TRAP X23 JSR MULT ADD R0, R2, #0 TRAP X21 HALT ; receives input from keyboard ; copies to register R1 ; receives input from keyboard ; jump to subroutine ; output to console ; subroutine MULT: receives in R0, R1 the two numbers to be multiplied ; returns the product in R2 MULT AND R2, R2, #0 ; initialization: R2 (partial product, sum) = 0 ADD R1, R1, #0 ; refresh CC status for loop counter R1 LOOP BRnz LEND ADD R2, R2, R0 ; R2 (sum += R0) ADD R1, R1, #-1 ; BR LOOP LEND RET.END 112

114 Υπορουτίνες Παράδειγμα 2 - Πολλαπλασιασμός.ORIG x3000 TRAP X23 ADD R1, R0, #0 TRAP X23 JSR MULT ADD R0, R2, #0 TRAP X21 HALT ; receives input from keyboard ; copies to register R1 ; receives input from keyboard ; jump to subroutine ; output to console ; subroutine MULT: receives in R0, R1 the two numbers to be multiplied ; returns the product in R2 MULT AND R2, R2, #0 ; initialization: R2 (partial product, sum) = 0 ADD R1, R1, #0 ; refresh CC status for loop counter R1 LOOP BRnz LEND ADD R2, R2, R0 ; R2 (sum += R0) ADD R1, R1, #-1 ; BR LOOP LEND RET.END 113

115 Υπορουτίνες Παράδειγμα 2 - Πολλαπλασιασμός.ORIG x3000 TRAP X23 ADD R1, R0, #0 TRAP X23 JSR MULT ADD R0, R2, #0 TRAP X21 HALT A.BLKW 2000 ; receives input from keyboard ; copies to register R1 ; receives input from keyboard ; jump to subroutine ; output to console ; subroutine MULT: receives in R0, R1 the two numbers to be multiplied ; returns the product in R2 MULT AND R2, R2, #0 ; initialization: R2 (partial product, sum) = 0 LOOP LEND.END ADD R1, R1, #0 BRnz LEND ADD R2, R2, R0 ; R2 (sum += R0) ADD R1, R1, #-1 ; BR LOOP RET ; refresh CC status for loop counter R1 5: label "MULT" at distance 2003 (allowed range is to 1023) 114

116 Υπορουτίνες Παράδειγμα 2 - Πολλαπλασιασμός.ORIG x3000 TRAP X23 ADD R1, R0, #0 TRAP X23 LD R5, M_P JSRR R5 ADD R0, R2, #0 TRAP X21 HALT M_P.FILL MULT A.BLKW 2000 ; receives input from keyboard ; copies to register R1 ; receives input from keyboard ; jump to subroutine ; output to console ; subroutine MULT: receives in R0, R1 the two numbers to be multiplied ; returns the product in R2 MULT AND R2, R2, #0 ; initialization: R2 (partial product, sum) = 0 LOOP LEND.END ADD R1, R1, #0 BRnz LEND ADD R2, R2, R0 ; R2 (sum += R0) ADD R1, R1, #-1 ; BR LOOP RET ; refresh CC status for loop counter R1 115

117 Υπορουτίνες Παράδειγμα 3 Υπολογισμός δύναμης (κλήση ρουτίνας από ρουτίνα).orig x3000 LD LD JSR HALT R0, BASE R1, EXP POWER ; Είσοδος R0, R1 Έξοδος R2 MULT AND R2, R2, #0 ADD R1, R1, #0 ; LOOP BRnz LEND ADD R2, R2, R0 ; ADD R1, R1, #-1 ; BR LOOP LEND RET ; Είσοδος R0, R1 Έξοδος R5 POWER ADD R6, R7, 0 ADD R3, R0, 0 ADD R4, R1, -1 ADD R5, R0, 0 PLOOP ADD R0, R3, 0 ADD R1, R5, 0 JSR MULT ADD R5, R2, 0 ADD R4, R4, -1 BRp PLOOP ADD R7, R6, 0 RET BASE.FILL #3 EXP.FILL #3.END 116

118 Υπορουτίνες Παράδειγμα 3 Υπολογισμός δύναμης (κλήση ρουτίνας από ρουτίνα).orig x3000 LD LD JSR HALT R0, BASE R1, EXP POWER ; Είσοδος R0, R1 Έξοδος R2 MULT AND R2, R2, #0 ADD R1, R1, #0 ; LOOP BRnz LEND ADD R2, R2, R0 ; ADD R1, R1, #-1 ; BR LOOP LEND RET ; Είσοδος R0, R1 Έξοδος R5 POWER ADD R6, R7, 0 ADD R3, R0, 0 ADD R4, R1, -1 ADD R5, R0, 0 PLOOP ADD R0, R3, 0 ADD R1, R5, 0 JSR MULT ADD R5, R2, 0 ADD R4, R4, -1 BRp PLOOP ADD R7, R6, 0 RET BASE.FILL #3 EXP.FILL #3.END 117

119 Υπορουτίνες Παράδειγμα 3 Υπολογισμός δύναμης (κλήση ρουτίνας από ρουτίνα).orig x3000 LD LD JSR HALT R0, BASE R1, EXP POWER ; Είσοδος R0, R1 Έξοδος R2 MULT AND R2, R2, #0 ADD R1, R1, #0 ; LOOP BRnz LEND ADD R2, R2, R0 ; ADD R1, R1, #-1 ; BR LOOP LEND RET Πρέπει να αντιγραφεί η τιμή του R7 για να είναι δυνατή η επιστροφή ; Είσοδος R0, R1 Έξοδος R5 POWER ADD R6, R7, 0 ADD R3, R0, 0 ADD R4, R1, -1 ADD R5, R0, 0 PLOOP ADD R0, R3, 0 ADD R1, R5, 0 JSR MULT ADD R5, R2, 0 ADD R4, R4, -1 BRp PLOOP ADD R7, R6, 0 RET BASE.FILL #3 EXP.FILL #3.END 118

120 Επιπλέον διάβασμα: LC-3 Simulator Lab Manual: c-3_simulator_lab_manual.html C to LC3 Assembly language: Manual and examples: mentals/lc3-trunk/docs/lc3-assemblymanualandexamples.pdf 119

121

Επίλυση προβλημάτων μέσω Η/Υ

Επίλυση προβλημάτων μέσω Η/Υ Επίλυση προβλημάτων μέσω Η/Υ Πρόβλημα Αλγόριθμοι Γλώσσα Αρχιτεκτονική Συνόλου Εντολών Μικροαρχιτεκτονική Κυκλώματα Στοιχεία 2 Ας σχεδιάσουμε μια πραγματική υπολογιστική μηχανή Ιδέα: Να βασιστούμε σε κάποιο

Διαβάστε περισσότερα

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι

Διαβάστε περισσότερα

Οργάνωση Η/Υ. Ο Επεξεργαστής TRN. Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου

Οργάνωση Η/Υ. Ο Επεξεργαστής TRN. Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου Οργάνωση Η/Υ Ο Επεξεργαστής TRN Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου ΚMΕ Κυριότεροι Καταχωρητές της ΚΜΕ του υπολογιστή TRN IR (20 bits) X (20 bits) I

Διαβάστε περισσότερα

Συμβολική Γλώσσα στον ΑΒΑΚΑ

Συμβολική Γλώσσα στον ΑΒΑΚΑ Συμβολική Γλώσσα στον ΑΒΑΚΑ Τα προγράμματα που είναι γραμμένα σε γλώσσα μηχανής (machine language) περιέχουν τόσο τις εντολές όσο και τις διευθύνσεις μνήμης γραμμένες σε αριθμητική μορφή και μάλιστα στο

Διαβάστε περισσότερα

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly Αρης Ευθυμίου Το σημερινό μάθημα! Σύνταξη εντολών! Θέματα σχετικά με τη προσπέλαση, οργάνωση μνήμης διευθύνση για κάθε byte διευθύνσεις λέξεων

Διαβάστε περισσότερα

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Γενικό διάγραμμα υπολογιστικού συστήματος Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε

Διαβάστε περισσότερα

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Τι εννοούμε με τον όρο υπολογιστικό σύστημα και τι με τον όρο μικροϋπολογιστικό σύστημα; Υπολογιστικό

Διαβάστε περισσότερα

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2) ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 3 Εντολές του MIPS (2) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Y Παράδειγμα (συνέχεια από προηγ. διάλεξη) $s3 = &A[0] = 0x0001080 &A[8]

Διαβάστε περισσότερα

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση Αρης Ευθυμίου Ανακοινώσεις! Βαθμοί: 1ης εργαστηριακής άσκησης Βαθμός 0 χωρίς σχόλια δεν έχω πάρει την άσκηση! ελέγξτε μήπως δεν το στέλνετε στο σωστό

Διαβάστε περισσότερα

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

Εντολές του MIPS (2) ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι Διάλεξη 3 Εντολές του MIPS (2) Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων 1 Παράδειγμα (συνέχεια από προηγ. διάλεξη) $s3

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 4 η έκδοση. Σύντομη Εισαγωγή στη χρήση του προσομοιωτή και συμβολομεταφραστή

Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 4 η έκδοση. Σύντομη Εισαγωγή στη χρήση του προσομοιωτή και συμβολομεταφραστή Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 4 η έκδοση QtSpim Σύντομη Εισαγωγή στη χρήση του προσομοιωτή και συμβολομεταφραστή (Τελευταία ενημέρωση για την έκδοση QtSpim 9.1.4)

Διαβάστε περισσότερα

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Εισαγωγή στη C θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Αρχιτεκτονικό σύνολο εντολών Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Τέτοιες λειτουργίες γίνονται διαμέσου του

Τέτοιες λειτουργίες γίνονται διαμέσου του Για κάθε εντολή υπάρχουν δυο βήματα που πρέπει να γίνουν: Προσκόμιση της εντολής (fetch) από τη θέση που δείχνει ο PC Ανάγνωση των περιεχομένων ενός ή δύο καταχωρητών Τέτοιες λειτουργίες γίνονται διαμέσου

Διαβάστε περισσότερα

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης Στόχοι και αντικείμενο ενότητας Έλεγχος ροής προγράμματος (βλ. ενότητα #4) Δομή επανάληψης #5.. Εντολές Επανάληψης Προτάσεις επανάληψης Εντολές while, do while Εντολή for Περί βρόχων (loops) Τελεστές,

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Κεφάλαιο 2 Ασκήσεις Άσκηση 1 Κώδικας C: f = g + h + B[4]; f = g A[B[4]]; f, g, h, στους $s0, $s1, $s2, και διευθύνσεις βάσης των πινάκων Α και Β στους $s6 και $s7 Ποιος είναι ο αντίστοιχος κώδικας MIPS;

Διαβάστε περισσότερα

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY120) #6 εκτέλεση σε επανάληψη 1 Σπύρος Λάλης Εκτέλεση σε επανάληψη: while while () lexpr body true false Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται σε μια τιμή

Διαβάστε περισσότερα

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

Σύγχρονες Αρχιτεκτονικές Υπολογιστών ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΜΑΤΙΚΗΣ Σύγχρονες Αρχιτεκτονικές Υπολογιστών ΑΚΑ ΗΜΑΪΚΟ ΕΤΟΣ 2014-2015 Αρχιτεκτονική Συνόλου Εντολών (Instruction Set Architecture-ISA) 1 Ένας υπολογιστής

Διαβάστε περισσότερα

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

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4 ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι Διάλεξη 4 Διαδικασίες Ι Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Εισαγωγή στους Η/Υ (ΗΥ134) 1 Διευθυνσιοδότηση διακλαδώσεων

Διαβάστε περισσότερα

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:

Διαβάστε περισσότερα

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών Άσκηση 1 (σύνοψη της εκφώνησης) [Εκτέλεση λογικών πράξεων]

Διαβάστε περισσότερα

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Αριθμός bit δίαυλου δεδομένων (Data Bus) Αριθμός bit δίαυλου διευθύνσεων (Address Bus) Μέγιστη συχνότητα λειτουργίας (Clock Frequency) Τύποι εντολών Αριθμητική

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ Τμήμα Πληροφορικής και Τεχνολογίας Υπολογιστών Μάθημα: Αρχιτεκτονική Υπολογιστών Εργασία: 1 A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα

Διαβάστε περισσότερα

Εισαγωγή στην πληροφορική -4

Εισαγωγή στην πληροφορική -4 Εισαγωγή στην πληροφορική 6 (, 64) bits Μνήµη Θέση (κύτταρο cell) µνήµης, χωράει λέξεις (words) εντολές (πρόγραµµα), αριθµοί (δεδοµένα) Αριθµοί: δυαδική (binary) αναπαράσταση = = = 4 = 4 = 5 = 7 Εισαγωγή

Διαβάστε περισσότερα

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Πρόγραμμα σε γλώσσα μηχανής του ΕΚΥ Θέση μνήμης Περιεχόμενα μνήμης Εντολή (assembly) 0 0001 000000000011 lda 3 1 0011 000000000100 ada

Διαβάστε περισσότερα

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

Οργάνωση Υπολογιστών Οργάνωση Υπολογιστών Επιμέλεια: Γεώργιος Θεοδωρίδης, Επίκουρος Καθηγητής Ανδρέας Εμερετλής, Υποψήφιος Διδάκτορας Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών 1 Άδειες Χρήσης Το παρόν υλικό

Διαβάστε περισσότερα

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

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών (ΗΜΜΥ) HMΜY 212 Οργάνωση Η/Υ και Μικροεπεξεργαστές Εαρινό Εξάμηνο, 2007 1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις Άσκηση 1: Σωστό/Λάθος

Διαβάστε περισσότερα

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

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 2 ο Σύνολα Εντολών Οι εντολές που εκτελεί ο κάθε επεξεργαστής (ή οικογένεια επεξεργαστών) MIPS ARM SPARC PowerPC IA-32 Αρχιτεκτονικές συνόλου εντολών Βασικές Έννοιες Εντολές μηχανής

Διαβάστε περισσότερα

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Μικροϋπολογιστής Υπολογιστής που χρησιμοποιείται για την είσοδο, επεξεργασία και έξοδο πληροφοριών. Είδη μικροϋπολογιστών:

Διαβάστε περισσότερα

Εγχειρίδιο χρήσης του Άβακα

Εγχειρίδιο χρήσης του Άβακα Εγχειρίδιο χρήσης του Άβακα Με το παρόν λογισμικό γίνεται προσομοίωση των λειτουργικών δυνατοτήτων του εκπαιδευτικού υπολογιστή που έχει την ονομασία Άβακας. Η εικόνα του Άβακα εμφανίζεται σε παράθυρο

Διαβάστε περισσότερα

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ» Περιεχόμενα Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»... 2 Καταχωρητές... 3 Αριθμητική-λογική μονάδα... 3 Μονάδα μνήμης... 4 Μονάδα Εισόδου - Εξόδου... 5 Μονάδα ελέγχου... 5 Ρεπερτόριο Εντολών «ΑΒΑΚΑ»... 6 Φάση

Διαβάστε περισσότερα

Υπολογισμός - Εντολές Επανάληψης

Υπολογισμός - Εντολές Επανάληψης Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Επανάληψης ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

Διαβάστε περισσότερα

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos Δομή Επανάληψης Κεφάλαιο 7 Mike Trimos Δομή Επανάληψης Η Διαδικασία αυτή ονομάζεται Βρόγχος ή Επανάληψη (Loop) και η εντολή ή το σύνολο των εντολών που επαναλαμβάνονται ονομάζεται Σώμα της Δομής. Η γλώσσα

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Αρχιτεκτονικό σύνολο εντολών Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή Τρίτη (3 η ) δίωρη διάλεξη. Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 2: Καταχωρητές, HelloWorld σε 8086, emu8086 emulator Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Ι Αρχιτεκτονική Υπολογιστών Ι Επιλεγμένες εντολές και συναρτήσεις assembly Από το βιβλίο Αρχιτεκτονική Υπολογιστών & Προγραμματισμός Assembly (Συγγραφέας / Εκδότης : Παναγιώτης Παπάζογλου) Δρ. Παναγιώτης

Διαβάστε περισσότερα

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

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών. Διδάσκων: Δρ. Γιώργος Ζάγγουλος ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών

Διαβάστε περισσότερα

Αρχιτεκτονικη υπολογιστων

Αρχιτεκτονικη υπολογιστων ΤΕΙ Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονικη υπολογιστων Τζαγκαράκης Χαράλαμπος hatzagarak@cs.teicrete.gr Εισαγωγη: ο επεξεργαστης και η γλωσσα του Eπεξεργαστής: MIPS Microprocessor Without Interlocked

Διαβάστε περισσότερα

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό.

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό. Ερωτήσεις θεωρίας MY Μέρος Α. Υλικό. 1. Η μνήμη ROM είναι συνδυαστικό ή ακολουθιακό κύκλωμα; 2. α) Να σχεδιαστεί μία μνήμη ROM που να δίνει στις εξόδους της το πλήθος των ημερών του μήνα, ο αριθμός του

Διαβάστε περισσότερα

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232) ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232) Δευτέρα, 3 Νοεμβρίου 25 ΔΙΑΡΚΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ 3 ΛΕΠΤΑ Για πλήρη

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης Προγραμματισμός Η/Υ Ενότητα 5: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Έλεγχος της ροής του προγράμματος

Διαβάστε περισσότερα

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 5: Εντολές Συγκρίσεων και Μεταφοράς Ελέγχου. Μανόλης Γ.Η.

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

Διαβάστε περισσότερα

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή Εισαγωγή Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ Σκοπός του εργαστηρίου είναι να γνωρίσουµε την εσωτερική δοµή και αρχιτεκτονική της κεντρικής µονάδας επεξεργασίας, να κατανοήσουµε τον τρόπο µε τον οποίο λειτουργεί

Διαβάστε περισσότερα

Οργάνωση Η/Υ. Γλώσσα Assembly. Τμήμα Εφαρμσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου

Οργάνωση Η/Υ. Γλώσσα Assembly. Τμήμα Εφαρμσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου Οργάνωση Η/Υ Γλώσσα Assembly Τμήμα Εφαρμσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου Δομή του TRN KME Μνήμη Διάδρομος Δεδομένων Διάδρομος Διευθύνσεων Διάδρομος Ελέγχου Μονάδα

Διαβάστε περισσότερα

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους: Επαναλήψεις - Loops Οι επαναλήψεις σε ένα πρόγραμμα μας επιτρέπουν μια ομάδα εντολών να εκτελείται για όσες φορές επιθυμούμε Υπάρχουν τρεις τρόποι επανάληψης εντολών με τη χρήση: While loops For loops

Διαβάστε περισσότερα

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

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 9 : Ομάδες Εντολών: Ιδιότητες και Λειτουργίες Ευάγγελος Καρβούνης Παρασκευή, 15/01/2016 Τι είναι ομάδα εντολών;

Διαβάστε περισσότερα

Παραδείγματα Προγραμματισμού σε Assembly του TRN

Παραδείγματα Προγραμματισμού σε Assembly του TRN Οργάνωση Η/Υ Παραδείγματα Προγραμματισμού σε Assembly του TRN Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου Παραδείγματα Προγραμματισμού Αναζήτηση του μεγίστου

Διαβάστε περισσότερα

Κεντρική Μονάδα Επεξεργασίας

Κεντρική Μονάδα Επεξεργασίας Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Κεντρική Μονάδα Επεξεργασίας (Σχεδιασμός και λειτουργία μιας απλής ΚΜΕ) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης

Διαβάστε περισσότερα

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 4 - Editor Περιγραφή Υλοποίηση ενός υποτυπώδους editor που θα: Διαβάζει ένα προκαθορισμένο αρχείο Θα το απεικονίζει στην οθόνη Θα κάνει highlight με έναν ελεγχόμενο

Διαβάστε περισσότερα

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

ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος Ε.1 Σας δίνεται ο πιο κάτω κώδικας. Ξαναγράψτε τον ώστε να μειωθεί ο αριθμός των εντολών του αλλά διατηρώντας την ίδια λειτουργιά

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 6: Διαδικασίες, Σωρός, Διαφανείς συναρτήσεις Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Κ. Δεμέστιχας Εργαστήριο Πληροφορικής Γεωπονικό Πανεπιστήμιο Αθηνών Επικοινωνία μέσω e-mail: cdemest@aua.gr, cdemest@cn.ntua.gr Διαφάνειες: Καθ. Νικόλαος Λορέντζος 7. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου Σκοπός και περίγραμμα της Ενότητας 4 Σκοπός της παρουσίασης Να μελετήσουμε τις συναρτήσεις που ελέγχουν την ροή και την εκτέλεση ενός προγράμματος Σύνοψη

Διαβάστε περισσότερα

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering Οργάνωση και Σχεδίαση Η/Y (HY232) Εργαστήριο 1 Χειμερινό Εξάμηνο 2016-2017 Στόχοι του εργαστηρίου Εντολές

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 5: Εντολές αλλαγής ροής. Διακλάδωση χωρίς συνθήκη. Διακλάδωση με συνθήκη. Δρ. Μηνάς Δασυγένης

Διαβάστε περισσότερα

Σημειώσεις για τον 80x86

Σημειώσεις για τον 80x86 Σημειώσεις για τον 80x86 Τι είναι η διεύθυνση; 16bits 0000h 0001h 0002h 8bits 20h 32h 30h Η μνήμη ενός μικροϋπολογιστικού συστήματος χωρίζεται σε μικρά τμήματα του ενός byte FFFEh 30h 2 16 =65,536 bytes

Διαβάστε περισσότερα

Εργαστήριο 2. Εαρινό Εξάμηνο Εντολές για είσοδο ακεραίων αριθμών από την κονσόλα:

Εργαστήριο 2. Εαρινό Εξάμηνο Εντολές για είσοδο ακεραίων αριθμών από την κονσόλα: Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1 Εργαστήριο 2 Εαρινό Εξάμηνο 2012-2013 Στό χόι τόυ εργαστηρι όυ Εντολές εισόδου-εξόδου Χρήση συνθηκών σε δομές

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις

Διαβάστε περισσότερα

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 4 η Τελεστές Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

Διαβάστε περισσότερα

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών Λειτουργικά Αριστείδης Ηλίας Συστήματα Ι Φ ρ ο ν τ ι σ τ ή ρ ι ο Shell Scripting Εισαγωγή Ένα shell script είναι μια λίστα εντολών που εκτελούνται ακολουθιακά Εκτελούνται ανάλογα με το κέλυφος και για

Διαβάστε περισσότερα

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού Μάθημα 2ο Aντώνης Σπυρόπουλος v2_061015 Οροι που

Διαβάστε περισσότερα

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

Συναρτήσεις-Διαδικασίες ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 4 Συναρτήσεις-Διαδικασίες Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων 1 Διαδικασίες (procedures) Γνωστές και σαν υπορουτίνες (subroutines)

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 7: Αποκωδικοποίηση Εντολής x86 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath O επεξεργαστής: Η δίοδος δεδοµένων (path) και η µονάδα ελέγχου (control) Σχεδίαση path 4 κατηγορίες εντολών: Αριθµητικές-λογικές εντολές (add, sub, slt κλπ) R Type Εντολές αναφοράς στη µνήµη (lw, sw) I

Διαβάστε περισσότερα

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

Στοιχεία από Assembly Γιώργος Μανής Στοιχεία από Assembly 8086 Γιώργος Μανής Καταχωρητές καταχωρητές γενικής φύσης καταχωρητές δείκτες καταχωρητές αναφοράς καταχωρητές τµηµάτων ειδικοί καταχωρητές Καταχωρητές γενικής φύσης 16 bit ax, bx,

Διαβάστε περισσότερα

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

Αρχιτεκτονικές Συνόλου Εντολών Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Αρχιτεκτονικές Συνόλου Εντολών (Instruction Set Architectures - ISA) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Ο

Διαβάστε περισσότερα

(Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να

(Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να Κεεφάάλλααι ιοο:: 3Β ο Τίττλλοοςς Κεεφααλλααί ίοουυ: : Αρχιτεκτονική Ηλ/κου Τµήµατος των Υπολ. Συστηµάτων (Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να αναφέρετε τις τιµές των

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86 ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86 Αρης Ευθυμίου Το σημερινό μάθημα! Λυση του lab02! Αρχιτεκτονική ARM σε τι μοιάζει και σε τι διαφέρει από τον MIPS! Αρχιτεκτονική x86 μια γρήγορη ματιά στη

Διαβάστε περισσότερα

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:

Διαβάστε περισσότερα

HY340, 2009 Α. Σαββίδης Slide 2 / 143. HY340, 2009 Α. Σαββίδης Slide 3 / 143. HY340, 2009 Α. Σαββίδης Slide 4 / 143

HY340, 2009 Α. Σαββίδης Slide 2 / 143. HY340, 2009 Α. Σαββίδης Slide 3 / 143. HY340, 2009 Α. Σαββίδης Slide 4 / 143 HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 4ο Παραγωγή Ενδιάμεσου Κώδικα ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης

Διαβάστε περισσότερα

Διαδικαστικός Προγραμματισμός

Διαδικαστικός Προγραμματισμός Διαδικαστικός Προγραμματισμός Ενότητα 3: Εντολές ελέγχου επανάληψη Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Σχεδίαση datapath Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) R Type Εντολές αναφοράς στη μνήμη (lw,

Διαβάστε περισσότερα

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

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών

Διαβάστε περισσότερα

Απλός επεξεργαστής (Επανάληψη)

Απλός επεξεργαστής (Επανάληψη) Απλός επεξεργαστής (Επανάληψη) Διάδρομος δεδομένων και μονάδα ελέγχου 4 ο κεφάλαιο Ο επεξεργαστής : Διάδρομος Δεδομένων και Έλεγχος Σε αυτό το κεφάλαιο θα μελετήσουμε την υλοποίηση του διαδρόμου δεδομένων

Διαβάστε περισσότερα

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

Τελική Εξέταση, Απαντήσεις/Λύσεις ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών (ΗΜΜΥ) HMΜY 212 Οργάνωση Η/Υ και Μικροεπεξεργαστές Εαρινό Εξάμηνο, 2007 Τελική Εξέταση, Απαντήσεις/Λύσεις Άσκηση 1: Assembly για

Διαβάστε περισσότερα

Υπολογιστικά Συστήματα Λογική Σχεδίαση Αρχιτεκτονική Η/Υ Διδάσκοντες: Δρ. Ευγενία Αδαμοπούλου, Δρ. Κώστας Δεμέστιχας

Υπολογιστικά Συστήματα Λογική Σχεδίαση Αρχιτεκτονική Η/Υ Διδάσκοντες: Δρ. Ευγενία Αδαμοπούλου, Δρ. Κώστας Δεμέστιχας Υπολογιστικά Συστήματα Λογική Σχεδίαση Αρχιτεκτονική Η/Υ Διδάσκοντες: Δρ. Ευγενία Αδαμοπούλου, Δρ. Κώστας Δεμέστιχας ΔΠΜΣ «Τεχνο- Οικονομικά Συστήματα» Τεχνολογία Πληροφορίας και Τηλεπικοινωνιών Ιστοσελίδα

Διαβάστε περισσότερα

Ολοκληρωμένα Κυκλώματα - Φθινόπωρο 2014 Γ. Δημητρακόπουλος. Εργαστηριακή άσκηση 2

Ολοκληρωμένα Κυκλώματα - Φθινόπωρο 2014 Γ. Δημητρακόπουλος. Εργαστηριακή άσκηση 2 Ολοκληρωμένα Κυκλώματα - Φθινόπωρο 2014 Γ. Δημητρακόπουλος Εργαστηριακή άσκηση 2 Σκοπός αυτής της εργαστηριακής άσκησης είναι να σας θυμίσει (ή να σας δείξει ανάλογα με το βαθμό εξοικίωσης σας) τον τρόπο

Διαβάστε περισσότερα

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

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 11-12 : Δομή και Λειτουργία της CPU Ευάγγελος Καρβούνης Παρασκευή, 22/01/2016 2 Οργάνωση της CPU Η CPU πρέπει:

Διαβάστε περισσότερα

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη. Chapter 5 Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου Ενδέκατη (11 η ) δίωρη διάλεξη. Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση: Καθ. Εφαρμογών Νικόλαος Πετράκης,

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

Άσκηση 1 (α) Άσκηση 1 (γ) Άσκηση 1 (β) Παραδείγματα Assembly. Άρα με έλεγχο στον $t1 αποφασίζω αν είναι 0 ή 1.

Άσκηση 1 (α) Άσκηση 1 (γ) Άσκηση 1 (β) Παραδείγματα Assembly. Άρα με έλεγχο στον $t1 αποφασίζω αν είναι 0 ή 1. (α) Παραδείγματα Assembly Εαρινό Εξάμηνο 2012 Γράψτε ένα μικρό πρόγραμμα (1-3 εντολές) με το οποίο μπορείτε να ανιχνεύσετε την τιμή του δυαδικού ψηφίου στη θέση 7 της θέσης μνήμης 0Χ23450009 εάν το λιγότερο

Διαβάστε περισσότερα

Μικροαρχιτεκτονική του LC3

Μικροαρχιτεκτονική του LC3 ΆδειαΧρήσης Τοπαρόνεκπαιδευτικόυλικόυπόκειταισε άδειεςχρήσηςcrea vecommons. Γιαεκπαιδευτικόυλικό,όπωςεικόνες,που υπόκειταισεάδειαχρήσηςάλλουτύπου, αυτήπρέπεινααναφέρεταιρητώς. Μικροαρχιτεκτονική του LC3

Διαβάστε περισσότερα

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

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

Διαβάστε περισσότερα

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Intel x86 ISA. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΗΥ ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Intel x86 ISA Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΗΥ RISC vs. CISC Η assembly των επεξεργαστών ARM, SPARC (Sun), και Power (IBM) είναι όμοιες

Διαβάστε περισσότερα

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:

Διαβάστε περισσότερα

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες! Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Κεντρική Επεξεργασίας (Σχεδιασμός και λειτουργία μιας απλής ΚΜΕ) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Η υπολογιστική

Διαβάστε περισσότερα

2. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΤΩΝ ΘΥΡΩΝ ΕΙΣΟ ΟΥ/ΕΞΟ ΟΥ ΤΟΥ PIC16F877-ΑΡΙΘΜΗΤΙΚΕΣ ΕΝΤΟΛΕΣ

2. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΤΩΝ ΘΥΡΩΝ ΕΙΣΟ ΟΥ/ΕΞΟ ΟΥ ΤΟΥ PIC16F877-ΑΡΙΘΜΗΤΙΚΕΣ ΕΝΤΟΛΕΣ 1 2. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΤΩΝ ΘΥΡΩΝ ΕΙΣΟ ΟΥ/ΕΞΟ ΟΥ ΤΟΥ PIC16F877-ΑΡΙΘΜΗΤΙΚΕΣ ΕΝΤΟΛΕΣ Σκοπός της άσκησης: εξοικείωση µε τις θύρες εισόδου/εξόδου ενός µικροελεγκτή 2. Θεωρητικό Μέρος 2.1.1 Θύρες εισόδου / εξόδου

Διαβάστε περισσότερα

Data-Level Parallelism Linking & Loading

Data-Level Parallelism Linking & Loading ΗΥ 232 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Διάλεξη 18 Data-Level Parallelism Linking & Loading Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Y (ECE 232) 1

Διαβάστε περισσότερα

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual MILE Simulator Version 1.0 User's Manual Νοέμβριος, 2011 Περιεχόμενα 1. Εισαγωγή στον προσομοιωτή...2 1.1 Εγκατάσταση...2 1.2 Βοήθεια Διευκρινήσεις...2 2. Ξεκινώντας με τον προσομοιωτή...3 2.1 Το memory

Διαβάστε περισσότερα

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

Οργάνωση Υπολογιστών (Ι) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Οργάνωση Υπολογιστών (Ι) (η κεντρική μονάδα επεξεργασίας) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Ένα

Διαβάστε περισσότερα

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

LANGUAGE OF THE MACHINE. TEI Κρήτης, Τμ. ΕΠΠ, Αρχιτεκτονική Υπολογιστών. Οργάνωση Υπολογιστή. Τυπική οργάνωση υπολογιστή INSTRUCTIONS LANGUAGE OF THE MACHINE Οργάνωση Υπολογιστή Τυπική οργάνωση υπολογιστή 1 Εκτέλεση προγραμμάτων σε υπολογιστή INSTRUCTION SET Οι λέξεις στη γλώσσα μηχανής ονομάζονται εντολές (instructions)

Διαβάστε περισσότερα

Πληρουορική Γ Γσμμασίοσ

Πληρουορική Γ Γσμμασίοσ Πληρουορική Γ Γσμμασίοσ Προγραμματισμός και Αλγόριθμοι Από το και τημ Χελώμα στημ Ευριπίδης Βραχνός http://evripides.mysch.gr/ 2014 2015 1 Προγραμματισμός Ζάννειο Πρότυπο Πειραματικό Γυμνάσιο Πειραιά Ενότητα:

Διαβάστε περισσότερα

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Η γλώσσα προγραμματισμού

Διαβάστε περισσότερα