Σύνοψη των εντολών του LC3
|
|
- Ἀπφία Ταμτάκος
- 8 χρόνια πριν
- Προβολές:
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 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι
Οργάνωση Η/Υ. Ο Επεξεργαστής TRN. Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου
Οργάνωση Η/Υ Ο Επεξεργαστής TRN Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου ΚMΕ Κυριότεροι Καταχωρητές της ΚΜΕ του υπολογιστή TRN IR (20 bits) X (20 bits) I
Συμβολική Γλώσσα στον ΑΒΑΚΑ
Συμβολική Γλώσσα στον ΑΒΑΚΑ Τα προγράμματα που είναι γραμμένα σε γλώσσα μηχανής (machine language) περιέχουν τόσο τις εντολές όσο και τις διευθύνσεις μνήμης γραμμένες σε αριθμητική μορφή και μάλιστα στο
ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly
ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly Αρης Ευθυμίου Το σημερινό μάθημα! Σύνταξη εντολών! Θέματα σχετικά με τη προσπέλαση, οργάνωση μνήμης διευθύνση για κάθε byte διευθύνσεις λέξεων
ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Γενικό διάγραμμα υπολογιστικού συστήματος Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε
Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ
Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Τι εννοούμε με τον όρο υπολογιστικό σύστημα και τι με τον όρο μικροϋπολογιστικό σύστημα; Υπολογιστικό
ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)
ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 3 Εντολές του MIPS (2) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Y Παράδειγμα (συνέχεια από προηγ. διάλεξη) $s3 = &A[0] = 0x0001080 &A[8]
ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση
ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση Αρης Ευθυμίου Ανακοινώσεις! Βαθμοί: 1ης εργαστηριακής άσκησης Βαθμός 0 χωρίς σχόλια δεν έχω πάρει την άσκηση! ελέγξτε μήπως δεν το στέλνετε στο σωστό
Εντολές του MIPS (2)
ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι Διάλεξη 3 Εντολές του MIPS (2) Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων 1 Παράδειγμα (συνέχεια από προηγ. διάλεξη) $s3
Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής
Γιώργος Δημητρίου Μάθημα 3-4: Προγραμματισμός MIPS Προγραμματισμός σε Συμβολική Γλώσσα Η συμβολική γλώσσα: δεν έχει τύπους, δεν έχει δηλώσεις μεταβλητών, δεν έχει δομές ελέγχου, δεν έχει εντολές βρόχων,
Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 4 η έκδοση. Σύντομη Εισαγωγή στη χρήση του προσομοιωτή και συμβολομεταφραστή
Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 4 η έκδοση QtSpim Σύντομη Εισαγωγή στη χρήση του προσομοιωτή και συμβολομεταφραστή (Τελευταία ενημέρωση για την έκδοση QtSpim 9.1.4)
Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.
Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:
Δομημένος Προγραμματισμός
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Εισαγωγή στη C θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό
Αρχιτεκτονική Υπολογιστών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Αρχιτεκτονικό σύνολο εντολών Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Τέτοιες λειτουργίες γίνονται διαμέσου του
Για κάθε εντολή υπάρχουν δυο βήματα που πρέπει να γίνουν: Προσκόμιση της εντολής (fetch) από τη θέση που δείχνει ο PC Ανάγνωση των περιεχομένων ενός ή δύο καταχωρητών Τέτοιες λειτουργίες γίνονται διαμέσου
Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #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) #6 εκτέλεση σε επανάληψη 1 Σπύρος Λάλης Εκτέλεση σε επανάληψη: while while () lexpr body true false Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται σε μια τιμή
Σύγχρονες Αρχιτεκτονικές Υπολογιστών
ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΜΑΤΙΚΗΣ Σύγχρονες Αρχιτεκτονικές Υπολογιστών ΑΚΑ ΗΜΑΪΚΟ ΕΤΟΣ 2014-2015 Αρχιτεκτονική Συνόλου Εντολών (Instruction Set Architecture-ISA) 1 Ένας υπολογιστής
Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4
ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι Διάλεξη 4 Διαδικασίες Ι Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Εισαγωγή στους Η/Υ (ΗΥ134) 1 Διευθυνσιοδότηση διακλαδώσεων
Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.
Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:
Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών
Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών Άσκηση 1 (σύνοψη της εκφώνησης) [Εκτέλεση λογικών πράξεων]
Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή
Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Αριθμός bit δίαυλου δεδομένων (Data Bus) Αριθμός bit δίαυλου διευθύνσεων (Address Bus) Μέγιστη συχνότητα λειτουργίας (Clock Frequency) Τύποι εντολών Αριθμητική
ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης
ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ Τμήμα Πληροφορικής και Τεχνολογίας Υπολογιστών Μάθημα: Αρχιτεκτονική Υπολογιστών Εργασία: 1 A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα
Εισαγωγή στην πληροφορική -4
Εισαγωγή στην πληροφορική 6 (, 64) bits Μνήµη Θέση (κύτταρο cell) µνήµης, χωράει λέξεις (words) εντολές (πρόγραµµα), αριθµοί (δεδοµένα) Αριθµοί: δυαδική (binary) αναπαράσταση = = = 4 = 4 = 5 = 7 Εισαγωγή
Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών
Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Πρόγραμμα σε γλώσσα μηχανής του ΕΚΥ Θέση μνήμης Περιεχόμενα μνήμης Εντολή (assembly) 0 0001 000000000011 lda 3 1 0011 000000000100 ada
Οργάνωση Υπολογιστών
Οργάνωση Υπολογιστών Επιμέλεια: Γεώργιος Θεοδωρίδης, Επίκουρος Καθηγητής Ανδρέας Εμερετλής, Υποψήφιος Διδάκτορας Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών 1 Άδειες Χρήσης Το παρόν υλικό
1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών (ΗΜΜΥ) HMΜY 212 Οργάνωση Η/Υ και Μικροεπεξεργαστές Εαρινό Εξάμηνο, 2007 1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις Άσκηση 1: Σωστό/Λάθος
Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής
Γιώργος Δημητρίου Μάθημα 2 ο Σύνολα Εντολών Οι εντολές που εκτελεί ο κάθε επεξεργαστής (ή οικογένεια επεξεργαστών) MIPS ARM SPARC PowerPC IA-32 Αρχιτεκτονικές συνόλου εντολών Βασικές Έννοιες Εντολές μηχανής
Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,
Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Μικροϋπολογιστής Υπολογιστής που χρησιμοποιείται για την είσοδο, επεξεργασία και έξοδο πληροφοριών. Είδη μικροϋπολογιστών:
Εγχειρίδιο χρήσης του Άβακα
Εγχειρίδιο χρήσης του Άβακα Με το παρόν λογισμικό γίνεται προσομοίωση των λειτουργικών δυνατοτήτων του εκπαιδευτικού υπολογιστή που έχει την ονομασία Άβακας. Η εικόνα του Άβακα εμφανίζεται σε παράθυρο
Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»
Περιεχόμενα Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»... 2 Καταχωρητές... 3 Αριθμητική-λογική μονάδα... 3 Μονάδα μνήμης... 4 Μονάδα Εισόδου - Εξόδου... 5 Μονάδα ελέγχου... 5 Ρεπερτόριο Εντολών «ΑΒΑΚΑ»... 6 Φάση
Υπολογισμός - Εντολές Επανάληψης
Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Επανάληψης ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία
Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos
Δομή Επανάληψης Κεφάλαιο 7 Mike Trimos Δομή Επανάληψης Η Διαδικασία αυτή ονομάζεται Βρόγχος ή Επανάληψη (Loop) και η εντολή ή το σύνολο των εντολών που επαναλαμβάνονται ονομάζεται Σώμα της Δομής. Η γλώσσα
Αρχιτεκτονική Υπολογιστών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Αρχιτεκτονικό σύνολο εντολών Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
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 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών
Αρχιτεκτονικη υπολογιστων
ΤΕΙ Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονικη υπολογιστων Τζαγκαράκης Χαράλαμπος hatzagarak@cs.teicrete.gr Εισαγωγη: ο επεξεργαστης και η γλωσσα του Eπεξεργαστής: MIPS Microprocessor Without Interlocked
Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό.
Ερωτήσεις θεωρίας MY Μέρος Α. Υλικό. 1. Η μνήμη ROM είναι συνδυαστικό ή ακολουθιακό κύκλωμα; 2. α) Να σχεδιαστεί μία μνήμη ROM που να δίνει στις εξόδους της το πλήθος των ημερών του μήνα, ο αριθμός του
Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232)
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232) Δευτέρα, 3 Νοεμβρίου 25 ΔΙΑΡΚΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ 3 ΛΕΠΤΑ Για πλήρη
Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης
Προγραμματισμός Η/Υ Ενότητα 5: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Έλεγχος της ροής του προγράμματος
Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 5: Εντολές Συγκρίσεων και Μεταφοράς Ελέγχου. Μανόλης Γ.Η.
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Οργάνωση Υπολογιστών Ασκήσεις 5: Εντολές Συγκρίσεων και Μεταφοράς Ελέγχου Μανόλης Γ.Η. Κατεβαίνης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό
Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή
Εισαγωγή Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ Σκοπός του εργαστηρίου είναι να γνωρίσουµε την εσωτερική δοµή και αρχιτεκτονική της κεντρικής µονάδας επεξεργασίας, να κατανοήσουµε τον τρόπο µε τον οποίο λειτουργεί
Οργάνωση Η/Υ. Γλώσσα Assembly. Τμήμα Εφαρμσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου
Οργάνωση Η/Υ Γλώσσα Assembly Τμήμα Εφαρμσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου Δομή του TRN KME Μνήμη Διάδρομος Δεδομένων Διάδρομος Διευθύνσεων Διάδρομος Ελέγχου Μονάδα
Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:
Επαναλήψεις - Loops Οι επαναλήψεις σε ένα πρόγραμμα μας επιτρέπουν μια ομάδα εντολών να εκτελείται για όσες φορές επιθυμούμε Υπάρχουν τρεις τρόποι επανάληψης εντολών με τη χρήση: While loops For loops
Αρχιτεκτονική υπολογιστών
1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 9 : Ομάδες Εντολών: Ιδιότητες και Λειτουργίες Ευάγγελος Καρβούνης Παρασκευή, 15/01/2016 Τι είναι ομάδα εντολών;
Παραδείγματα Προγραμματισμού σε Assembly του TRN
Οργάνωση Η/Υ Παραδείγματα Προγραμματισμού σε Assembly του TRN Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου Παραδείγματα Προγραμματισμού Αναζήτηση του μεγίστου
Κεντρική Μονάδα Επεξεργασίας
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Κεντρική Μονάδα Επεξεργασίας (Σχεδιασμός και λειτουργία μιας απλής ΚΜΕ) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης
Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor
Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 4 - Editor Περιγραφή Υλοποίηση ενός υποτυπώδους editor που θα: Διαβάζει ένα προκαθορισμένο αρχείο Θα το απεικονίζει στην οθόνη Θα κάνει highlight με έναν ελεγχόμενο
ΕΠΛ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 Σκοπός της παρουσίασης Να μελετήσουμε τις συναρτήσεις που ελέγχουν την ροή και την εκτέλεση ενός προγράμματος Σύνοψη
Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών 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 Τι είναι η διεύθυνση; 16bits 0000h 0001h 0002h 8bits 20h 32h 30h Η μνήμη ενός μικροϋπολογιστικού συστήματος χωρίζεται σε μικρά τμήματα του ενός byte FFFEh 30h 2 16 =65,536 bytes
Εργαστήριο 2. Εαρινό Εξάμηνο Εντολές για είσοδο ακεραίων αριθμών από την κονσόλα:
Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1 Εργαστήριο 2 Εαρινό Εξάμηνο 2012-2013 Στό χόι τόυ εργαστηρι όυ Εντολές εισόδου-εξόδου Χρήση συνθηκών σε δομές
ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις
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
O επεξεργαστής: Η δίοδος δεδοµένων (path) και η µονάδα ελέγχου (control) Σχεδίαση path 4 κατηγορίες εντολών: Αριθµητικές-λογικές εντολές (add, sub, slt κλπ) R Type Εντολές αναφοράς στη µνήµη (lw, sw) I
Στοιχεία από Assembly Γιώργος Μανής
Στοιχεία από Assembly 8086 Γιώργος Μανής Καταχωρητές καταχωρητές γενικής φύσης καταχωρητές δείκτες καταχωρητές αναφοράς καταχωρητές τµηµάτων ειδικοί καταχωρητές Καταχωρητές γενικής φύσης 16 bit ax, bx,
Αρχιτεκτονικές Συνόλου Εντολών
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Αρχιτεκτονικές Συνόλου Εντολών (Instruction Set Architectures - ISA) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Ο
(Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να
Κεεφάάλλααι ιοο:: 3Β ο Τίττλλοοςς Κεεφααλλααί ίοουυ: : Αρχιτεκτονική Ηλ/κου Τµήµατος των Υπολ. Συστηµάτων (Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να αναφέρετε τις τιµές των
Προγραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86
ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86 Αρης Ευθυμίου Το σημερινό μάθημα! Λυση του lab02! Αρχιτεκτονική ARM σε τι μοιάζει και σε τι διαφέρει από τον MIPS! Αρχιτεκτονική x86 μια γρήγορη ματιά στη
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 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 4ο Παραγωγή Ενδιάμεσου Κώδικα ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης
Διαδικαστικός Προγραμματισμός
Διαδικαστικός Προγραμματισμός Ενότητα 3: Εντολές ελέγχου επανάληψη Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,
Εισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Σχεδίαση datapath Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) R Type Εντολές αναφοράς στη μνήμη (lw,
ΗΜΥ 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 Σκοπός αυτής της εργαστηριακής άσκησης είναι να σας θυμίσει (ή να σας δείξει ανάλογα με το βαθμό εξοικίωσης σας) τον τρόπο
Αρχιτεκτονική υπολογιστών
1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 11-12 : Δομή και Λειτουργία της CPU Ευάγγελος Καρβούνης Παρασκευή, 22/01/2016 2 Οργάνωση της CPU Η CPU πρέπει:
Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.
Chapter 5 Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου Ενδέκατη (11 η ) δίωρη διάλεξη. Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση: Καθ. Εφαρμογών Νικόλαος Πετράκης,
Δομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Άσκηση 1 (α) Άσκηση 1 (γ) Άσκηση 1 (β) Παραδείγματα Assembly. Άρα με έλεγχο στον $t1 αποφασίζω αν είναι 0 ή 1.
(α) Παραδείγματα Assembly Εαρινό Εξάμηνο 2012 Γράψτε ένα μικρό πρόγραμμα (1-3 εντολές) με το οποίο μπορείτε να ανιχνεύσετε την τιμή του δυαδικού ψηφίου στη θέση 7 της θέσης μνήμης 0Χ23450009 εάν το λιγότερο
Μικροαρχιτεκτονική του LC3
ΆδειαΧρήσης Τοπαρόνεκπαιδευτικόυλικόυπόκειταισε άδειεςχρήσηςcrea vecommons. Γιαεκπαιδευτικόυλικό,όπωςεικόνες,που υπόκειταισεάδειαχρήσηςάλλουτύπου, αυτήπρέπεινααναφέρεταιρητώς. Μικροαρχιτεκτονική του LC3
Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής
ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 9 Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων 1 Ti είναι Αρχιτεκτονική και τι Μικροαρχιτεκτονική
ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Intel x86 ISA. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΗΥ
ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Intel x86 ISA Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΗΥ RISC vs. CISC Η assembly των επεξεργαστών ARM, SPARC (Sun), και Power (IBM) είναι όμοιες
Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.
Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:
i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Κεντρική Επεξεργασίας (Σχεδιασμός και λειτουργία μιας απλής ΚΜΕ) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Η υπολογιστική
2. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΤΩΝ ΘΥΡΩΝ ΕΙΣΟ ΟΥ/ΕΞΟ ΟΥ ΤΟΥ PIC16F877-ΑΡΙΘΜΗΤΙΚΕΣ ΕΝΤΟΛΕΣ
1 2. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΤΩΝ ΘΥΡΩΝ ΕΙΣΟ ΟΥ/ΕΞΟ ΟΥ ΤΟΥ PIC16F877-ΑΡΙΘΜΗΤΙΚΕΣ ΕΝΤΟΛΕΣ Σκοπός της άσκησης: εξοικείωση µε τις θύρες εισόδου/εξόδου ενός µικροελεγκτή 2. Θεωρητικό Μέρος 2.1.1 Θύρες εισόδου / εξόδου
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
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 Κρήτης, Τμ. ΕΠΠ, Αρχιτεκτονική Υπολογιστών. Οργάνωση Υπολογιστή. Τυπική οργάνωση υπολογιστή
INSTRUCTIONS LANGUAGE OF THE MACHINE Οργάνωση Υπολογιστή Τυπική οργάνωση υπολογιστή 1 Εκτέλεση προγραμμάτων σε υπολογιστή INSTRUCTION SET Οι λέξεις στη γλώσσα μηχανής ονομάζονται εντολές (instructions)
Πληρουορική Γ Γσμμασίοσ
Πληρουορική Γ Γσμμασίοσ Προγραμματισμός και Αλγόριθμοι Από το και τημ Χελώμα στημ Ευριπίδης Βραχνός http://evripides.mysch.gr/ 2014 2015 1 Προγραμματισμός Ζάννειο Πρότυπο Πειραματικό Γυμνάσιο Πειραιά Ενότητα:
Εισαγωγή στην πληροφορική
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Η γλώσσα προγραμματισμού