Εργαστήριο ΕΙΣΑΓΩΓΗ ΣΤΗΝ INTEL ASSEMBLY 32BIT

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

Download "Εργαστήριο ΕΙΣΑΓΩΓΗ ΣΤΗΝ INTEL ASSEMBLY 32BIT"

Transcript

1 Εργαστήριο ΕΙΣΑΓΩΓΗ ΣΤΗΝ INTEL ASSEMBLY 32BIT Εισαγωγή 1 Σκοπός του εργαστηρίου είναι η εισαγωγή στον προγραμματισμό στη συμβολική γλώσσα assembly των 32-bit επεξεργαστών της Intel μέσα από απλά προγράμματα εμφάνισης δεδομένων. 1 Εισαγωγή στην Intel assembly 32bit 2 Είσοδος έξοδος δεδομένων 3 Αριθμητικές & λογικές πράξεις 4 Έλεγχος ροής εκτέλεσης 5 Διαδικασίες και μακροεντολές 6 Πίνακες και αλφαριθμητικά 7 Διαχείριση αρχείων 8 Πλαίσια μηνυμάτων και παράθυρα 9 Χρήση της assembly με την C/C++ 10 Ολοκληρωμένα Συστήματα - Εφαρμογές Μορφή προγράμματος 32-bit assembly Η βασική μορφή ενός 32-bit assembly προγράμματος έχει ως ακολούθως:.386 ; ή.486,.586,.686.model FLAT, STDCALL.STACK <τιμή> option casemap :none.data <αρχικοποιημένα δεδομένα>....data? < μη αρχικοποιημένα δεδομένα >....CONST <σταθερές>....code <ετικέτα>: <ο κώδικας της εφαρμογής>... end <ετικέτα> Επεξηγήσεις.386 Ενημερώνει τον συμβολομεταφραστή να κάνει χρήση του συνόλου εντολών για επεξεργαστές και μετέπειτα (ο επεξεργαστής ήταν η πρώτη μηχανή των 32-bit συνόλου εντολών)..model FLAT, STDCALL.MODEL <μοντέλο μνήμης> <calling convention> βασικά προσδιορίζει το μοντέλο μνήμης του προγράμματος και τον τρόπο περάσματος παραμέτρων. 1

2 Μόνο ένα μοντέλο είναι διαθέσιμο στο περιβάλλον ανάπτυξης 32-bit Windows εφαρμογών κι αυτό είναι το FLAT ανεξάρτητα από το είδος της εφαρμογής προς ανάπτυξη (standard executable, console, dll, static library, κλπ.). Σε αυτό το μοντέλο (protected mode) η μνήμη αποτελεί ένα μεγάλο συνεχές τμήμα (για δεδομένα και κώδικα) μεγέθους 4GB (2 32 ). Το λειτουργικό Windows εκτελεί κάθε Win32 εφαρμογή σε ένα ξεχωριστό εικονικό χώρο (virtual space) που σημαίνει ότι κάθε εφαρμογή έχει το δικό της 4GB χώρο διευθύνσεων. Αυτό δεν σημαίνει ότι κάθε Win32 εφαρμογή έχει 4GB φυσικής μνήμης αλλά ότι μπορεί να προσπελάσει οποιαδήποτε διεύθυνση σε αυτό το εύρος και το λειτουργικό θα φροντίσει αυτές οι αναφορές της εφαρμογής να είναι έγκυρες. Έτσι γίνεται κατανοητό ότι εδώ δεν χρειάζεται να μας απασχολούν τα διάφορα μοντέλα μνήμης (models) και τα τμήματα (segments) όπως γινόταν στην ανάπτυξη 16- bit εφαρμογών. STDCALL (Windows API calling convention) ενημερώνει τον assembler για τον τρόπο με τον οποίο οι παράμετροι περνούν στις συναρτήσεις κατά την κλήση τους (από τα δεξιά-στα-αριστερά) καθώς και για την εξισορρόπηση της στοίβας μετά την ολοκλήρωση της κλήσης της συνάρτησης (η καλούμενη συνάρτηση είναι υπεύθυνη). Άλλες επιλογές μπορεί να είναι: C, BASIC, FORTRAN, PASCAL, SYSCALL..STACK <τιμή> Προσδιορίζει το μέγεθος της στοίβας, π.χ..stack 4096 προσδιορίζει μια 4K στοίβα. option casemap :none Με αυτή την επιλογή οι ετικέτες είναι case sensitive. Δηλαδή οι upper case και lower case χαρακτήρες αντιμετωπίζονται ως διαφορετικοί..data Εμπεριέχει τα αρχικοποιημένα δεδομένα (variables) του προγράμματος..data? Εμπεριέχει μη αρχικοποιημένα δεδομένα. Μπορεί να χρησιμοποιηθεί όταν θέλουμε να δεσμεύσουμε μνήμη χωρίς να την αρχικοποιήσουμε. Ένα πλεονέκτημα είναι ότι δεν δεσμεύει χώρο στο εκτελέσιμο. Απλώς ενημερώνουμε τον assembler για το χώρο που χρειάζεται το πρόγραμμά μας κατά τη φόρτωσή του στη μνήμη..const Εμπεριέχει δηλώσεις σταθερών (constants)..code etiketa: Ο κώδικας του προγράμματος. End etiketa 2

3 ΠΑΡΑΔΕΙΓΜΑ 1 Παράδειγμα προγράμματος που αθροίζει δυο ακεραίους και τοποθετεί το αποτέλεσμα στη μνήμη. ; κάνει χρήση της εντολής ADD για να αθροίσει το 5 και το 10 σε δεκαεξαδική μορφή και τοποθετεί το αποτέλεσμα στη μνήμη στην παράμετρο sum.386.model flat, stdcall.data? sum DWORD? ; δεσμεύει 4 bytes (32 bits).code start: ret end start mov eax,05h ; 5 add eax,0ah ; 5+10 mov sum, eax Μπορούμε να παρακολουθήσουμε την εκτέλεση του προγράμματος και να δούμε το αποτέλεσμα που προκύπτει στη μνήμη κάνοντας χρήση κάποιου debugger, π.χ. όπως ο OllyDbg. Σε αυτόν τον debugger, επιλέγοντας DEBUG-> Step into μπορούμε να παρακολουθήσουμε τη βηματική εκτέλεση της κάθε εντολής του προγράμματός μας στο παράθυρο disassembly, όπως έχει διαμορφωθεί με τις πρόσθετες εντολές που προκύπτουν από τη μετάφραση, και στα παράθυρα των καταχωρητών και της μνήμης πως διαμορφώνονται τα περιεχόμενά τους. Το παράθυρο disassembly: Το αποτέλεσμα της άθροισης F που έχει προκύψει με την εντολή ADD στον καταχωρητή EAX, η εντολή MOV το τοποθετεί στην παράμετρο sum στη διεύθυνση [ ] στο τμήμα δεδομένων στη μνήμη. 3

4 ΠΑΡΑΔΕΙΓΜΑ 2α Παράδειγμα προγράμματος που εμφανίζει το μήνυμα Hello World στην οθόνη (με χρήση του Command prompt window ή Console)..386.model flat, stdcall option casemap :none ; include files include \masm32\include\windows.inc ; ορισμοί και δηλώσεις για τις Win32 API δομές include \masm32\include\masm32.inc ; διαδικασίες του MASM32 assembler ;Windows API include files include \masm32\include\kernel32.inc ; API συναρτήσεις διαχείρισης μνήμης και διεργασιών ; libraries includelib \masm32\lib\masm32.lib ; masm32 static library, διότι κάνουμε χρήση της StdOut ; import libraries for Windows API functions includelib \masm32\lib\kernel32.lib ; διότι κάνουμε χρήση της ExitProcess.data minima db "Hello World!", 0 ; string που τερματίζει με NUL (0 hexadecimal ASCII).code start: invoke StdOut, addr minima ; εμφάνιση του μηνύματος στην έξοδο (console) invoke ExitProcess, 0 ;κλήση της Win32 API συνάρτησης ExitProcess για έξοδο στα Windows ; ή push 0 call ExitProcess ; ή exit (MASM μακροεντολή), θα πρέπει να συμπεριληφθεί και το αρχείο macros.asm end start Επεξηγήσεις OPTION CASEMAP:NONE Με αυτή την επιλογή οι ετικέτες είναι case sensitive. Έτσι για παράδειγμα το ExitProcess και exitprocess είναι διαφορετικά. Include... Ενημερώνει τον assembler να ανοίξει το αρχείο το όνομα του οποίου ακολουθεί και να επεξεργαστεί τα περιεχόμενά του. Το αρχείο windows.inc συμπεριλαμβάνεται πάντα καθώς περιέχει ορισμούς και δηλώσεις για τις Win32 API σταθερές και δομές. Το αρχείο masm32.inc περιέχει διαδικασίες του MASM32 assembler (π.χ. η StdOut). Το αρχείο kernel32.inc περιέχει API συναρτήσεις διαχείρισης μνήμης και διεργασιών (π.χ. η ExitProcess). 4

5 IncludeLib... Με την ντιρεκτίβα αυτή ενημερώνουμε τον assembler ποιες βιβλιοθήκες (include libraries) χρησιμοποιούμε στην εφαρμογή μας (στην περίπτωσή μας τη masm32.lib) για να τις συμπεριλάβει. Σε αυτό το σημείο ο assembler τοποθετεί μια εντολή διασύνδεσης (linker command) στο objective αρχείο έτσι ώστε ο linker να γνωρίζει με ποιες βιβλιοθήκες η εφαρμογή μας χρειάζεται να συνδεθεί. Η db (define byte) προσδιορίζει ότι η παράμετρος minima δεσμεύει ένα αριθμό από bytes για το αλφαριθμητικό με περιεχόμενο "Hello World!" (ακολουθούμενο από τον ascii χαρακτήρα NUL, κατά τα πρότυπα του ASCII/ANSI αλφαριθμητικού). Η invoke καλεί μια συνάρτηση και τυχόν παραμέτρους της. Στην περίπτωσή μας καλεί την StdOut (στη masm32.lib) με τις παραμέτρους της. Η επιλογή addr minima δίνει τη διεύθυνση της παραμέτρου minima. Η επιλογή αυτή μπορεί να διαχειριστεί τοπικές μεταβλητές (δεσμευμένες στην στοίβα των οποίων η διεύθυνση γίνεται γνωστή κατά την εκτέλεση) και όχι forward references (δηλ. εάν η παράμετρος δηλώνεται παρακάτω στον κώδικα τότε δεν θα μπορεί να τη διαχειριστεί). Η επιλογή ADDR μπορεί να χρησιμοποιηθεί μόνο σε συνδυασμό με την INVOKE. Η επιλογή offset επιστρέφει την απόσταση της διεύθυνσης μιας παραμέτρου (συνήθως μεταβλητή) σε σχέση με την αρχή του τμήματος ή ομάδας (segment/group) που την περιέχει. Η επιλογή offset μπορεί να διαχειριστεί forward references όμως δεν μπορεί να διαχειριστεί τοπικές μεταβλητές καθώς η offset ερμηνεύεται κατά τη συμβολομετάφραση (compile time). Δηλαδή η offset δουλεύει μόνο με διευθύνσεις που είναι γνωστές κατά τη συμβολομετάφραση. Έτσι δεν μπορούμε να την χρησιμοποιήσουμε για να πάρουμε τη διεύθυνση μιας παραμέτρου της στοίβας. Όσον αφορά τις σφαιρικές μεταβλητές (global variables) με την addr ο assembler τοποθετεί τις διευθύνσεις τους στο object αρχείο όπως ακριβώς συμπεριφέρεται και με την offset. Η συνάρτηση StdOut είναι μια συνάρτηση που είναι διαθέσιμη μόνο στον MASM32 (αποτελεί μια μακροεντολή η οποία καλεί μια άλλη διαδικασία για να εξάγει στην έξοδο κείμενο). Ο MASM32 assembler έχει ένα πλήθος μακροεντολών που διευκολύνουν τον προγραμματισμό σε assembly και τον κάνουν πιο φιλικό όπως συμβαίνει και με τις γλώσσες υψηλού επιπέδου. Π.χ. μερικές άλλες μακροεντολές είναι:.if.else.endif.repeat until.while....break.endw. for. Endm Η ExitProcess προκαλεί την έξοδο και επιστροφή στα Windows με το 0 ως τιμή επιστροφής. 5

6 Μετάφραση, διασύνδεση και εκτέλεση από τη γραμμή εντολών Μετάφραση Στη γραμμή εντολών (command line) πληκτρολογούμε: masm32\bin\ml /c /coff hello.asm Η παράμετρος /c προσδιορίζει ότι ο MASM θα κάνει μόνο συμβολομετάφραση. Η παράμετρος /coff προσδιορίζει ότι ο MASM θα δημιουργήσει ένα αρχείο.obj file σε μορφή COFF (Common Object File Format). Έτσι εφόσον δεν υπάρχουν λάθη θα δημιουργηθεί το object αρχείο hello.obj. Διασύνδεση Στη συνέχεια θα πρέπει να γίνει η διασύνδεσή του καλώντας τον linker: masm32\bin\link /SUBSYSTEM:CONSOLE hello.obj Η παράμετρος /SUBSYSTEM:CONSOLE ενημερώνει τον linker τι είδους εκτελέσιμο είναι η εφαρμογή μας (CONSOLE/WINDOWS). Εκτέλεση Τώρα δημιουργήθηκε το εκτελέσιμο hello.exe το οποίο εκτελούμε πληκτρολογώντας στη γραμμή εντολών το όνομά του: hello.exe 6

7 M ASM32 Quick Editor Η σύνταξη του προγράμματος μπορεί να γίνει και στο περιβάλλον του MASM32 χρησιμοποιώντας τον Quick Editor (\masm32\qeditor.exe) και η εκτέλεση μέσα από το μενού Project-> Console Build All, Project-> Run Program. Το μενού Tools περιλαμβάνει δυνατότητες ανάλυσης της μετάφρασης και εκτέλεσης (Dis-assemble EXE file) καθώς και debugging με το λογισμικό VKDEBUG. 7

8 W inasm Παρομοίως η σύνταξη και η εκτέλεση του παραπάνω παραδείγματος φυσικά μπορεί να γίνει και στο περιβάλλον της εφαρμογής WinAsm. Δημιουργία του έργου: File -> New Project -> Empty Project -> Console Application hello.asm ; όνομα του assembly προγράμματος hello.wap ; όνομα του assembly project Στο παραπάνω παράδειγμα η εκτέλεση του προγράμματος θα μπορούσε να τερματιστεί εφόσον πατηθεί κάποιο πλήκτρο, με χρήση της μακροεντολής inkey (θα πρέπει να συμπεριληφθεί και το αρχείο macros.asm). Η μακροεντολή αυτή χρησιμοποιεί επίσης την μακροεντολή print για την εμφάνιση του μηνύματος (εφόσον υπάρχει), και τη μακροεντολή wait_key για να διαβάσει το χαρακτήρα (χρησιμοποιεί συναρτήσεις της Microsoft Visual C Run-Time Library msvcrt.lib στην υλοποίησή της οπότε θα πρέπει να συμπεριληφθεί), τον οποίο και τοποθετεί στον καταχωρητή EAX. ΠΑΡΑΔΕΙΓΜΑ 2β (Console Application) Παράδειγμα προγράμματος που εμφανίζει το μήνυμα Hello World στην οθόνη (με χρήση της Console) (τερματίζει την εμφάνιση όταν πατηθεί ένα πλήκτρο). File -> New Project -> Empty Project -> Console Application.386 8

9 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\masm32.inc include \masm32\include\msvcrt.inc include \masm32\macros\macros.asm includelib \masm32\lib\kernel32.lib includelib \masm32\lib\masm32.lib includelib \masm32\lib\msvcrt.lib ; the macros library ; the Microsoft Visual C Run-Time Library.data minima db "Hello World!", 13,10,0 ; Carriage Return και Line Feed.code start: invoke StdOut, addr minima inkey ;ή inkey "Hit any Key";διαβάζει το χαρακτήρα που δόθηκε και τοποθετεί την ASCII ; αναπαράσταση (σε δεκαεξαδική μορφή) του χαρακτήρα στον EAX ; η γραμμή της εντολής inkey :Hit any key ισοδυναμεί με τις παρακάτω εντολές: ; print "Hit any Key" ; call wait_key ;μόλις πατηθεί πλήκτρο τοποθετεί την ASCII αναπαράσταση του χαρακτήρα (σε δεκαεξαδική μορφή) στον EAX ; print chr$(13,10) ; ακόμα μπορεί να χρησιμοποιηθεί και η getkey invoke ExitProcess, 0 end start Μετάφραση, διασύνδεση και εκτέλεση: Make-> Assemble, Make-> Link, Make-> Execute Στην περίπτωση αυτή του κώδικα το παράθυρο εκτέλεσης (console) παραμένει ανοιχτό (δηλ. συνεχίζει να τρέχει το thread) και θα κλείσει με το πάτημα οποιουδήποτε πλήκτρου. Παρακολούθηση και ανάλυση της εκτέλεσης Μπορούμε να προχωρήσουμε σε ανάλυση της εκτέλεσης του έργου χρησιμοποιώντας ένα external debugger όπως ο OllyDbg (32-bit assembler level analysing debugger for Microsoft Windows) από το μενού Make-> Debug. 9

10 Επιλέγοντας DEBUG-> Step into (αλλά και Step over όποτε κρίνουμε αναγκαίο) μπορούμε να προβούμε σε ανάλυση της εκτέλεσης. Το παράθυρο disassembly που δείχνει το πρόγραμμά μας σε assembly με τις πρόσθετες εντολές όπως προκύπτουν από τη μετάφραση. 10

11 Το παράθυρο των καταχωρητών. Χαρακτηριστικό είναι ότι ο δείκτης των εντολών EIP (instruction pointer) δείχνει κάθε φορά τη διεύθυνση της επόμενης εντολής στη μνήμη (π.χ h) από όπου θα τη φέρει προς εκτέλεση. Στο παράθυρο μνήμης στη διεύθυνση h περιέχονται τα δεδομένα μας (κάθε byte σε δεκαεξαδική μορφή που αντιστοιχούν στους ASCII χαρακτήρες στα δεξιά του παραθύρου). Συγκεκριμένα το μήνυμα της παραμέτρου minima ( Hello World ) της εντολής εμφάνισης (invoke StdOut), και στη διεύθυνση Fh το μήνυμα ( Hit any key ) της εντολής inkey. 11

12 Εκτελώντας βηματικά την εφαρμογή μας (Step into) ξεκινά από την εκτέλεση της εντολής: invoke StdOut, addr minima η οποία σε disassembly έχει τη μορφή: PUSH OFFSET ; Arg1 = ASCII "Hello World!" CALL ; hello Πρώτα τοποθετεί (PUSH) στη στοίβα τη διεύθυνση ( h) του δεδομένου μας (minima) στη μνήμη, στην κορυφή της στοίβας στη διεύθυνση 0019FF80h. Όπως βλέπουμε τώρα και στο παράθυρο των καταχωρητών ο δείκτης στοίβας (ESP) δείχνει σε αυτή τη διεύθυνση. ESP 0019FF80 PTR to ASCII "Hello World!" Στη συνέχεια (με Step into) μετακινείται (CALL) στη διαδικασία στη διεύθυνση h (μπορούμε και με Step over απλώς να συνεχίσουμε με την ολοκλήρωση της εκτέλεσή της). Εκεί συνεχίζει την εκτέλεσή του όσον αφορά την StdOut και τη δέσμευση του διαχειριστή (StdHandle) του αρχείου της τυπικής εξόδου (standard output handle), 12

13 καταλήγοντας να γράψει (.WriteFile) στην τυπική έξοδο το μήνυμα "Hello World!" και επιστρέφει. Κατά τη βηματική εκτέλεση (step into) της διαδικασίας αυτής παρατηρούμε ότι ο μεταγλωττιστής τοποθετεί εντολές που αποθηκεύουν το δείκτη βάσης EBP και στη συνέχεια αντιγράφουν σε αυτόν το περιεχόμενο του δείκτη στοίβας ESP. Αυτό γίνεται διότι ο δείκτης βάσης EBP χρησιμοποιείται σαν σημείο αναφοράς για την εύρεση των παραμέτρων στη στοίβα PUSH EBP ; hello (guessed Arg1) MOV EBP,ESP Στη συνέχεια (Step into) προχωράμε με την εκτέλεση της εντολής: inkey "Hit any Key" η οποία σε disassembly έχει τη μορφή: A PUSH OFFSET F ; Arg1 = ASCII "Hit any Key" F CALL ; hello CALL ; hello Πρώτα τοποθετεί (PUSH) στη στοίβα τη διεύθυνση ( Fh) του δεδομένου ("Hit any Key") στη μνήμη, στην κορυφή της στοίβας στη διεύθυνση 0019FF80h, όπως βλέπουμε τώρα και από τον δείκτη στοίβας (ESP) ο οποίος δείχνει σε αυτή τη διεύθυνση. ESP 0019FF80 PTR to ASCII "Hit any Key" Στη συνέχεια (Step into) μετακινείται (CALL) και πάλι στη διαδικασία στη διεύθυνση h (μπορούμε και πάλι με Step over απλώς να συνεχίσουμε με την ολοκλήρωση της εκτέλεσή της). Εκεί συνεχίζει την εκτέλεσή του όσον αφορά την StdOut και τη δέσμευση του διαχειριστή (StdHandle) του αρχείου της τυπικής εξόδου (standard output handle), καταλήγοντας να γράψει (.WriteFile) στην τυπική έξοδο και το μήνυμα "Hit any Key", και επιστρέφει. 13

14 Στη συνέχεια (Step into) προχωρώντας με την εκτέλεση της εντολής (inkey) μετακινείται (CALL) στη διαδικασία στη διεύθυνση (μπορούμε και πάλι με Step over απλώς να συνεχίσουμε με την ολοκλήρωση της εκτέλεσή της). Εκεί συνεχίζει την εκτέλεση περιμένοντας από το χρήστη να πατήσει ένα πλήκτρο για να συνεχίσει. Όταν το πλήκτρο πατηθεί συνεχίζει με την επόμενη εντολή και ο χαρακτήρας του πλήκτρου τοποθετείται σε ASCII δεκαεξαδική μορφή στον καταχωρητή EAX. Στη συνέχεια (Step over) προχωρά με την τοποθέτηση των χαρακτήρων τέλους γραμμής Carriage return (13, Dh) και Line feed (10, Ah) στο τερματικό PUSH OFFSET B ; Arg1 = ASCII "13,10" E CALL ; hello Τέλος, παρομοίως (Step over) προχωρά με την εκτέλεση της εντολής εξόδου και ολοκλήρωσης της εκτέλεσης του προγράμματος. invoke ExitProcess, 0 η οποία σε disassembly έχει τη μορφή: PUSH 0 ; ExitCode = CALL <JMP.&kernel32.ExitProcess>; KERNEL32.ExitProcess A JMP DWORD PTR DS:[<&kernel32.ExitProcess>] 14

15 MS Visual Studio Παρομοίως η δημιουργία της εφαρμογής μπορεί να γίνει και στο περιβάλλον του Visual Studio Professional 2015 της Microsoft (ή σε προγενέστερα versions, ή στο Visual Studio Community). Δημιουργία του έργου: File -> New Project -> Visual C++ ->Win32 -> Win32 console application (empty project) hello.asm ; όνομα του assembly προγράμματος hello.vcxproj ; όνομα του assembly project Μετάφραση, διασύνδεση και εκτέλεση: Η μετάφραση εκτελείται από το μενού: Build -> Compile και στη συνέχεια για τη δημιουργία του εκτελέσιμου του project επιλέγουμε: Build -> Solution και η εκτέλεσή του μπορεί να γίνει από το μενού: DEBUG -> Start Debugging (ή με τον Local Windows Debugger). Παρακολούθηση και ανάλυση της εκτέλεσης Μπορούμε να προχωρήσουμε σε ανάλυση της εκτέλεσης του έργου (debugging) μέσα από την επιλογή DEBUG ->Windows-> Disassembly. Μετά τη δημιουργία του εκτελέσιμου, επιλέγοντας DEBUG-> Step into (αλλά και Step over όπου κρίνουμε αναγκαίο) μπορούμε να προβούμε σε ανάλυση της εκτέλεσης χρησιμοποιώντας στη συνέχεια το παράθυρο disassembly με την επιλογή DEBUG-> Windows-> Disassembly και βοηθητικών παραθύρων καταχωρητών (DEBUG-> Windows->Registers) και μνήμης (DEBUG-> Windows->Memory) και ενδεχομένως εισάγοντας και breakpoints. 15

16 Το παράθυρο με τον πηγαίο κώδικα της εφαρμογής μας. Το παράθυρο disassembly που δείχνει το πρόγραμμά μας σε assembly με τις πρόσθετες εντολές όπως προκύπτουν από τη μετάφραση. 16

17 Το παράθυρο των καταχωρητών. Χαρακτηριστικό είναι ότι ο δείκτης των εντολών EIP (instruction pointer) δείχνει κάθε φορά τη διεύθυνση της επόμενης εντολής στη μνήμη (π.χ C) από όπου θα τη φέρει προς εκτέλεση. Στο παράθυρο μνήμης τοποθετούμε τη διεύθυνση h στην οποία περιέχονται τα δεδομένα μας και συγκεκριμένα αρχικά το μήνυμα της παραμέτρου minima (Hello World) προς εμφάνιση. Αυτά μπορούμε στη συνέχεια να τα παρατηρήσουμε στο παράθυρο μνήμης όπου μας δείχνει από αριστερά τις διευθύνσεις μνήμης, στη μέση τα περιεχόμενά τους σε κάθε byte σε δεκαεξαδική μορφή που αντιστοιχούν στους ASCII χαρακτήρες στα δεξιά. 17

18 Εκτελώντας βηματικά την εφαρμογή μας (Step into) ξεκινά από την εκτέλεση της εντολής: invoke StdOut, addr minima η οποία σε disassembly έχει τη μορφή: C push h call ( h) Πρώτα τοποθετεί (PUSH) το δεδομένο μας (minima), από τη διεύθυνση ( h) όπου βρίσκεται στη μνήμη, στη στοίβα στη διεύθυνση 0034FCF0, όπως βλέπουμε τώρα και από τον δείκτη στοίβας (ESP) ο οποίος δείχνει σε αυτή τη διεύθυνση. ESP = 0034FCF0 ; εμπεριέχει το δεδομένο "Hello World!" Στη συνέχεια (Step into) μετακινείται (call) στη διαδικασία στη διεύθυνση h (μπορούμε και με Step over απλώς να συνεχίσουμε με την ολοκλήρωση της εκτέλεσή της). Εκεί συνεχίζει την εκτέλεσή του όσον αφορά την StdOut και τη δέσμευση του διαχειριστή (StdHandle) του αρχείου της τυπικής εξόδου (standard output handle), καταλήγοντας να γράψει (.WriteFile) στην τυπική έξοδο το μήνυμα "Hello World!", και επιστρέφει. Κατά τη βηματική εκτέλεση (step into) της διαδικασία αυτής παρατηρούμε ότι ο μεταγλωττιστής τοποθετεί εντολές που αποθηκεύουν το δείκτη βάσης EBP και στη συνέχεια αντιγράφουν σε αυτόν το περιεχόμενο του δείκτη στοίβας ESP. Αυτό γίνεται διότι ο δείκτης βάσης EBP χρησιμοποιείται σαν σημείο αναφοράς για την εύρεση των παραμέτρων στη στοίβα. _StdOut@4: push ebp mov ebp,esp Στη συνέχεια (Step into) προχωράμε με την εκτέλεση της εντολής: inkey "Hit any Key" η οποία σε disassembly έχει τη μορφή: push 89500Fh B call _StdOut@4 ( h) 18

19 Πρώτα τοποθετεί (PUSH) το δεδομένο ("Hit any Key"), από τη διεύθυνση ( Fh) όπου βρίσκεται στη μνήμη, στη στοίβα στη διεύθυνση 0019FF80h, όπως βλέπουμε τώρα και από τον δείκτη στοίβας (ESP) ο οποίος δείχνει σε αυτή τη διεύθυνση. ESP = 0034FCF0 ; εμπεριέχει το δεδομένο "Hit any Key" Στη συνέχεια (Step into) μετακινείται (call) και πάλι στη διαδικασία στη διεύθυνση h (μπορούμε και πάλι με Step over απλώς να συνεχίσουμε με την ολοκλήρωση της εκτέλεσή της). Εκεί συνεχίζει την εκτέλεσή του όσον αφορά την StdOut και τη δέσμευση του διαχειριστή (StdHandle) του αρχείου της τυπικής εξόδου (standard output handle), καταλήγοντας να γράψει (.WriteFile) στην τυπική έξοδο και το μήνυμα "Hit any Key", και επιστρέφει. Στη συνέχεια (Step into) προχωρώντας με την εκτέλεση της εντολής (inkey) μετακινείται (call) στη διαδικασία στη διεύθυνση h (μπορούμε και πάλι με Step over απλώς να συνεχίσουμε με την ολοκλήρωση της εκτέλεσή της) call _wait_key@0 ( h) push 89501Bh Εκεί συνεχίζει την εκτέλεση περιμένοντας από το χρήστη να πατήσει ένα πλήκτρο για να συνεχίσει. Όταν το πλήκτρο πατηθεί συνεχίζει με την επόμενη εντολή και ο χαρακτήρας του πλήκτρου τοποθετείται σε ASCII δεκαεξαδική αναπαράσταση στον καταχωρητή EAX. Στη συνέχεια (Step over) προχωρά με την τοποθέτηση των χαρακτήρων τέλους γραμμής Carriage return (13, Dh) και Line feed (10, Ah) στο τερματικό push 89501Bh A call _StdOut@4 ( h) Τέλος, παρομοίως (Step over) προχωρά με την εκτέλεση της εντολής εξόδου και την ολοκλήρωση της εκτέλεσης του προγράμματος. invoke ExitProcess, 0 η οποία σε disassembly έχει τη μορφή: F push call _ExitProcess@4 ( h) int 3 19

20 Εργαστήριο 1: Ασκήσεις 1. Να μελετηθεί (debug/disassembly) η εκτέλεση του παρακάτω προγράμματος και τα περιεχόμενα της μνήμης και των καταχωρητών και ειδικότερα του καταχωρητή EAX..386.model flat, stdcall.data p1 DWORD 5 ;decimal p2 DWORD 10 ;decimal.data? sum DWORD?.code start: mov eax, p1 add eax, p2 mov sum, eax ret end start 2. Να μελετηθεί (debug/disassembly) η εκτέλεση του παρακάτω προγράμματος και τα περιεχόμενα της μνήμης και των καταχωρητών και ειδικότερα του καταχωρητή EAX (θα χρειαστείτε και υπενθύμιση της αναπαράστασης αρνητικών twos complement representation). Σημείωση: όσον αφορά τα δεδομένα στη μνήμη οι x86 επεξεργαστές χρησιμοποιούν το πρότυπο αποθήκευσης little endian, στο οποίο το μικρότερης σημασίας (low-order) byte αποθηκεύεται στη διεύθυνση έναρξης της παραμέτρου..386.model flat, stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib.data onebyte BYTE 0ffh ; δεκαεξαδικά δεδομένα oneword WORD 1234h onesword SWORD -1234h onedword DWORD h.code start: mov eax,0 ; EAX =? mov al,onebyte ; EAX =? mov ax,oneword ; EAX =? mov ax,onesword ; EAX =? mov eax,onedword ; EAX =? 20

21 mov ax,0 ; EAX =? invoke ExitProcess,NULL end start 3. Να γραφεί πρόγραμμα το οποίο εμφανίζει το ονοματεπώνυμό σας και να μελετηθεί η εκτέλεσή του (δεδομένα στη μνήμη, περιεχόμενα καταχωρητών, στοίβας). 4. Να μελετηθεί (debug/disassembly) η εκτέλεση του παρακάτω προγράμματος και ειδικότερα το περιεχόμενο του καταχωρητή EAX (θα χρειαστείτε και υπενθύμιση της ASCII κωδικοποίησης χαρακτήρων)..386.model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\masm32.inc include \masm32\include\msvcrt.inc include \masm32\macros\macros.asm includelib \masm32\lib\kernel32.lib includelib \masm32\lib\masm32.lib includelib \masm32\lib\msvcrt.lib.data? char BYTE?.code start: call wait_key mov char,al print chr$(13,10) print addr char print chr$(13,10) print chr$(46h,49h,4eh,49h,53h,48h,0dh,0ah) inkey "press any key..." invoke ExitProcess, 0 end start 5. Να γραφεί πρόγραμμα το οποίο διαβάζει και εμφανίζει ένα χαρακτήρα (να μελετηθεί η εκτέλεσή του). 21

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

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

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

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

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

Προηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος Προηγμένοι Μικροεπεξεργαστές Έλεγχος Ροής Προγράμματος Control Flow εντολές Jump related JMP Jcc (JZ, JNZ, JB, JNB etc) JCXZ, JECXZ LOOP LOOPE, LOOPNE Procedure related CALL RET INT IRET INTO ENTER LEAVE

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

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

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

Αρχιτεκτονική Υπολογιστών Εργαστήριο Αρχιτεκτονική Υπολογιστών Εργαστήριο Ενότητα: ΠΑΡΑΔΕΙΓΜΑ ΑΠΟΣΦΑΛΜΑΤΩΣΗΣ Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

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

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

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

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

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

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

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

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

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

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

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

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Τηλ/νιών Τομέας Προγ/σμού & Τεχνολογίας Λογισμικού Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Δρ. Νικόλαος Θ. Λιόλιος Καθηγητής Φεβρουάριος 2012 1. Εισαγωγή Το Visual

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

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

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

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

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

Ανάπτυξη εφαρμογής Input-Output

Ανάπτυξη εφαρμογής Input-Output Ανάπτυξη εφαρμογής Input-Output Πίνακας Περιεχομένων Ανάπτυξη εφαρμογής Input-Output... 1 1. Εκτέλεση του περιβάλλοντος ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition... 1 2. Δημιουργία νέου

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

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++ ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση του περιβάλλοντος Dev C++ το οποίο θα χρησιμοποιηθεί για την υλοποίηση

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

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

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

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

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

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

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες 0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Εισαγωγικά

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

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

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

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

Συστήματα Μικροεπεξεργαστών

Συστήματα Μικροεπεξεργαστών Εργαστήριο 1 ο Εισαγωγή στον AVR Περίγραμμα Εργαστηριακής Άσκησης Εισαγωγή... 2 Κατηγορίες μικροελεγκτών AVR... 2 Εξοικείωση με το περιβάλλον AVR Studio 4... 3 Βήμα 1ο: Δημιουργία νέου έργου (project)...

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

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

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

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

Data-Level Parallelism Linking & Loading

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

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

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΙΙ Εργαστήριο 2 ο ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ- ΨΕΥΔΟΕΝΤΟΛΕΣ ΜΑΚΡΟΕΝΤΟΛΕΣ- ΔΙΑΔΙΚΑΣΙΕΣ (ΕΙΣΑΓΩΓΗ)

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΙΙ Εργαστήριο 2 ο ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ- ΨΕΥΔΟΕΝΤΟΛΕΣ ΜΑΚΡΟΕΝΤΟΛΕΣ- ΔΙΑΔΙΚΑΣΙΕΣ (ΕΙΣΑΓΩΓΗ) ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΙΙ Εργαστήριο 2 ο ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ- ΨΕΥΔΟΕΝΤΟΛΕΣ ΜΑΚΡΟΕΝΤΟΛΕΣ- ΔΙΑΔΙΚΑΣΙΕΣ (ΕΙΣΑΓΩΓΗ) ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι Τρία κύρια τμήματα Ορισμός μοντέλου τμημάτων μνήμης και σωρού Ορισμός

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

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

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr 1 Δομημένος προγραμματισμός έναντι αντικειμενοστρεφούς

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

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας, Μικροεπεξεργαστές Σημειώσεις Μαθήματος 2013-14 Υπεύθυνος: Δρ Άρης Παπακώστας, Η γλώσσα assembly είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου για συγκεκριμένους υπολογιστές ή άλλη προγραμματιζόμενη

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

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

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 4: Πολλαπλασιασμός (MUL,IMUL). Διαίρεση (DIV,IDIV). Εμφάνιση αλφαριθμητικού. Εμφάνιση χαρακτήρα.

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++ Εντολές εισόδου - εξόδου Εισαγωγή στη C++ Το πρώτο πρόγραμμα //my first program #include using namespace std; int main(){ cout

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 1ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Ορισμός Wikipedia.org 2 Δομημένος προγραμματισμός (structured programming) ή διαδικαστικός προγραμματισμός (procedural

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

Δημιουργία μιας εφαρμογής Java με το NetBeans

Δημιουργία μιας εφαρμογής Java με το NetBeans Δημιουργία μιας εφαρμογής Java με το NetBeans Για να δημιουργήσετε μια εφαρμογή Java πρέπει να ακολουθήσετε τα εξής βήματα : Αρχικά πρέπει να δημιουργηθεί ένα project το οποίο θα περιέχει όλα τα αρχεία

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

Εισαγωγή στο περιβάλλον Code::Blocks

Εισαγωγή στο περιβάλλον Code::Blocks Εισαγωγή στο περιβάλλον Code::Blocks Στο παρόν εγχειρίδιο παρουσιάζεται η διαδικασία ανάπτυξης, μεταγλώττισης και εκτέλεσης ενός προγράμματος C στο περιβάλλον του Code::Blocks. Η διαδικασία αυτή παρουσιάζεται

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

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Αναδροµή Σύντοµη Αναδροµή Η γλώσσα προγραµµατισµού C είναι µία γλώσσα

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

Μικρή Εισαγωγή στο wxdev-c++

Μικρή Εισαγωγή στο wxdev-c++ Μικρή Εισαγωγή στο περιβάλλον wxdev-c++ Το wxdev-c++ αποτελεί ένα πλήρες περιβάλλον ανάπτυξης εφαρμογών για την γλώσσα C και C++. Το περιβάλλον είναι ελεύθερο λογισμικό και χρησιμοποιεί μια ειδική έκδοση

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

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

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

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

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

Εισαγωγή στη γλώσσα προγραμματισμού C++

Εισαγωγή στη γλώσσα προγραμματισμού C++ Εισαγωγή στη γλώσσα προγραμματισμού C++ Περιβάλλον Εργασίας 2 Περιβάλλον Εργασίας 1. Χρήση απλού κειμενογράφου και Μεταγλωττιστή 2. Ολοκληρωμένα Περιβάλλοντα Εργασίας (Integrated Development Environments)

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή περιορισμένοι υπολογιστικοί / αποθηκευτικοί πόροι δεν τίθεται θέμα

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

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

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

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

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

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object

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

To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition

To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition Πίνακας Περιεχομένων To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition... 1 Εκτέλεση του περιβάλλοντος ανάπτυξης

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

Αρχιτεκτονική x86(-64) 32-bit και 64-bit λειτουργία. Αρχιτεκτονική x86(-64) Αρχιτεκτονική επεξεργαστών x86(-64) Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

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

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 3: Καταχωρητές, Τμήματα, Διευθυνσιοδότηση Μνήμης, SEGMENT, MOV, ADD, SUB, INT, TITLE, LEA

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

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

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

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

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

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος. Û ØÓÒ ÔÖÓ Ö ÑÑ Ø Ñ ¾ Ç Ö ÐÓ ØÛÒ ÙÔÓÐÓ ØôÒ Ο υπολογιστής είναι εργαλείο επίλυσης προβλημάτων λόγω: ταχύτητας υπολογισμού και μεγέθους μνήμης γενικής χρησιμότητας μέσω της έννοιας του προγραμματισμού. Η

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

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 6 C & Assembly Real World Situation Στον πραγματικό κόσμο, κανείς δεν γράφει αποκλειστικά assembly Κουραστικό Δύσκολα συντηρήσιμος κώδικας Μηδενική φορητότητα Μεγάλη

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

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

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

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

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού

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

Προγραμματισμός I (Θ)

Προγραμματισμός I (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός I (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Οκτώβριος 2017 Δρ. Δημήτρης Βαρσάμης Οκτώβριος

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

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

Παράλληλη Επεξεργασία

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Τι είναι το OpenMP Πρότυπο Επέκταση στη C/C++ και τη Fortran

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 2: Μεταβλητές και Σταθερές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

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

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ. ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗΣ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ Πληροφορική I "Προγραμματισμός" B. Φερεντίνος

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

ΕΡΓΑΣΤΗΡΙΟ 16. Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse

ΕΡΓΑΣΤΗΡΙΟ 16. Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse ΕΡΓΑΣΤΗΡΙΟ 16 Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse 1. Δημιουργήστε ένα νέο project και ενσωματώστε το πρόγραμμα Fibonacci.java. 2. Βεβαιωθείτε ότι μεταγλωττίζει σωστά. Σχήμα 1: Adding

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

Περιεχόµενα. I Βασικές Γνώσεις 1

Περιεχόµενα. I Βασικές Γνώσεις 1 Περιεχόµενα I Βασικές Γνώσεις 1 1 Μοντελοποίηση Προγραµµάτων 3 1.1 Ψευδογλώσσα....................... 6 1.2 Διαγράµµατα Ροής..................... 6 1.3 Παραδείγµατα σε Ψευδογλώσσα και Διαγράµµατα Ροής.

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

S, (5, -3, 34, -23, 7) ( /, @, *, _

S, (5, -3, 34, -23, 7) ( /, @, *, _ 1 Τι είναι αρχείο Οι πληροφορίες που καλείται να διαχειριστεί ο Η/Υ είναι τόσες πολλές που η μνήμη του δεν φτάνει να τις επεξεργαστεί όλες μαζί. Γι αυτό τον λόγο αποθηκεύονται σε μονάδες αποθήκευσης (π.χ

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 1: Εισαγωγή Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο

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

ΚΕΦΑΛΑΙΟ 4ο. Α. Το περιβάλλον της Microsoft Fortran Powerstation

ΚΕΦΑΛΑΙΟ 4ο. Α. Το περιβάλλον της Microsoft Fortran Powerstation ΚΕΦΑΛΑΙΟ 4ο Α. Το περιβάλλον της Microsoft Fortran Powerstation Μία πρώτη ταξινόµηση των γλωσσών προγραµµατισµού σχετίζεται µε το επίπεδο της µηχανής για το οποίο προγραµµατίζει κάποιος. Έτσι διακρίνουµε

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

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

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

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

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

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

1. Ξεκινώντας. 1.1 Τι είναι η Java. PDF created with FinePrint pdffactory Pro trial version

1. Ξεκινώντας. 1.1 Τι είναι η Java. PDF created with FinePrint pdffactory Pro trial version 1. Ξεκινώντας Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να περιγράψετε τα κύρια χαρακτηριστικά της γλώσσας Java Να περιγράψετε τη Java Virtual Machine Να περιγράψετε πώς λειτουργεί ο μηχανισμός «συλλογής

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στην FORTRAN Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 Fortran FORmula TRANslation: (Μία από τις πρώτες γλώσσες τρίτης γενιάς) Εκδόσεις FORTRAN (1957) FORTRAN II (1958) FORTRAN III

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

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

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

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

Μετάφραση ενός Προγράμματος Εξαιρέσεις

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

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ 4 ο Εξάμηνο Μαδεμλής Ιωάννης ΥΠΟΡΟΥΤΙΝΕΣ ΕΡΓΑΣΤΗΡΙΟ 6 Οι υπορουτίνες αποτελούν αυτόνομα τμήματα κώδικα που διεκπεραιώνουν μία συγκεκριμένη εργασία και μπορούμε να τα καλούμε

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

ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ

ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Θεματική Ενότητα 3 Βασικά εργαλεία ενός προγραμματιστή (editor, compiler, linker κτλ). Το διαδικτυακό περιβάλλον που θα χρησιμοποιηθεί Πληροφορική και Υπολογιστική Βιοϊατρική

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

Ανάπτυξη εφαρμογής Input-Output

Ανάπτυξη εφαρμογής Input-Output Ανάπτυξη εφαρμογής Input-Output Πίνακας Περιεχομένων Ανάπτυξη εφαρμογής Input-Output... 1 1. Εκτέλεση του περιβάλλοντος ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition... 1 2. Δημιουργία νέου

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να αναπτύξουν ένα πρόγραμμα όπου θα επαναλάβουν τα βήματα ανάπτυξης μιας παραθυρικής εφαρμογής.

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα

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

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15) (Κεφάλαιο 2.7 και 12) Αρχεία στην C (Διάλεξη 15) 14-1 Επανάληψη στην Αποθήκευση (Storage) Για να αποθηκεύσουμε δεδομένα από ένα πρόγραμμα, πρέπει να χρησιμοποιήσουμε την Δευτερεύουσα Μνήμη 14-2 Επανάληψη

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No 05 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

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

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

Πως θα κατασκευάσω το πρώτο πρόγραμμα; Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να γίνει εξοικείωση το μαθητών με τον ΗΥ και το λειτουργικό σύστημα. - Επίδειξη του My Computer

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

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

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

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

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος Α. Θεωρία 1. Κύκλος Ανάπτυξης Προγράµµατος 1. Συγγραφή και Μεταγλώττιση ενός προγράµµατος 2. Εκτέλεση του προγράµµατος

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Μάριος Αραποστάθης Καθηγητής πληροφορικής Βαρβάκειου Λύκειου http://users.sch.gr/mariosarapostathis 6.1 Η έννοια του

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

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