Dr.Fuzzy Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 Όπως και κάθε γλώσσα, έτσι και η assembly έχει compiler ο οποίος μετατρέπει τον κώδικα assembly σε κώδικα μηχανής για να μπορεί στη συνέχεια να εκτελεστεί. Οι compilers της assembly ονομάζονται assemblers. Το πρόγραμμα που κάνει την αντίστροφη δουλειά (κώδικα μηχανής σε assembly) ονομάζεται disassembler. η χρήση του όρου compiler εδώ δεν είναι δόκιμη. Από συμβολική γλώσσα assembly σε κώδικα μηχανής δεν γίνεται compile αλλά απλά μια μετατροπή ενός mnemonic σε opcode και συμβολικών ονομάτων που αντιστοιχούν σε διευθύνσεις μνήμης, το οποίο αναλαμβάνει ο assembler, πχ, η εντολή assembly: >MOV AL, 61h ; Load AL with 97 decimal (61 hex) αναλυτικά είναι MOV=10110, AL=000, 97=01100001 οπότε τελικά σε γλώσσα μηχανής είναι >10110000 01100001 οπότε (πάρα πολύ απλουστευμένα) σε επίπεδο υλικού αυτό που συμβαίνει όταν ο instruction register του επεξεργαστή λάβει το MOV=10110 είναι να στείλει στον register AL (που αποτελείται από 8-flip flop) τη σειρά 97 = 01100001 στον επόμενο κύκλο ρολογιού.
defacer Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 IMO είναι καλύτερα να εξηγήσεις στον άλλο με έναν όρο που θα καταλάβει άμεσα και μετά να πεις assembler, παρά να τον δυσκολεύεις σε κάτι που δεν ξέρει μόνο και μόνο για να μη χρησιμοποιήσεις μια έκφραση (στην τελική αν μάθει παραπάνω το "ατόπημα" είναι πολύ μικρό ενώ αν δε μάθει τότε είναι μια χαρά σύνοψη σε 4 λέξεις ότι "assembler == compiler για assembly"). Κατά τα άλλα συμφωνώ όπως συμφωνώ και με ο,τι λέει εδώ, δηλαδή κυρίως: Conceptually speaking, both an assembler and a compiler do exactly the same thing: they take as input some language that is human-understandable, and translate that directly into machine code instructions that the computer can execute. [...] However, in common usage, an "assembler" refers specifically to a such a program that takes as its input assembly language. [...] A "compiler" generally refers to any other instance of this concept, but usually means something that take a "higher-level language" (i.e. anything above assembly language) and translates that to machine code.
migf1 Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 δηλαδη ο επεξεργαστης εκτελει μονο 01100101010101 ... Yeap! Και σε επίπεδο hardware αυτό "μεταφράζεται" σε παροχή ρεύματος όπου υπάρχει 1, διακοπή παροχής ρεύματος όπου υπάρχει 0. Η παροχή/διακοπή ρεύματος ελέγχεται μέσω των λεγόμενων logical-gates. Για μια πρώτη ιδέα μπορείς να δεις το σχετικό άρθρο της Wikipedia: http://en.wikipedia....wiki/Logic_gate Αυτά διδάσκονται συνήθως σε μαθήματα computer-architecture, τα οποία με τη σειρά τους πάνε "παρέα" με μαθήματα assembly.
defacer Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 Yeap! Και σε επίπεδο hardware αυτό "μεταφράζεται" σε παροχή ρεύματος όπου υπάρχει 1, διακοπή παροχής ρεύματος όπου υπάρχει 0. Η παροχή/διακοπή ρεύματος ελέγχεται μέσω των λεγόμενων logical-gates. Για μια πρώτη ιδέα μπορείς να δεις το σχετικό άρθρο της Wikipedia: http://en.wikipedia....wiki/Logic_gate Η παροχή ρεύματος ελέγχεται μέσω transistor. Συγκεκριμένες διατάξεις από transistor ονομάζονται logic gates, αλλά δεν αποτελούν όλα τα transistor μέρος κάποιας logic gate. Με άλλα λόγια τη μπάλα την κλωτσάνε πόδια, όχι ομάδες.
migf1 Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 Η παροχή ρεύματος ελέγχεται μέσω transistor. Συγκεκριμένες διατάξεις από transistor ονομάζονται logic gates, αλλά δεν αποτελούν όλα τα transistor μέρος κάποιας logic gate. Με άλλα λόγια τη μπάλα την κλωτσάνε πόδια, όχι ομάδες. Επειδή έχουμε μια προϊστορία οι 2 μας, αυτή σου η απάντηση γράφτηκε ως διόρθωση ή ως συμπλήρωμα στη δική μου παράθεση που χρησιμοποιείς;
SpirtouLisS Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 ενας καλος τροπος για να καταλαβει κανεις τα βασικα της δυαδικης λογικης και πως η assembly συνδεει τον ανθρωπο με ενα επεξεργαστη ειναι να παρει απο ενα καταστημα ηλεκτρονικων ενα μικροεπεξεργαστη μικροελεγκτη στυλ 8051, να βρει και απο το ιντερνετ το pdf με τις εντολες του και τι κανει η καθε μια και να μαθει να τον προγραμματιζει. να καταλαβει δλδ βασικες εννοιες επεξεργαστη-rom μνημης οπως ο σωρος stuck και τα interrupts...δε θελω να λεω κινεζικα αλλα αν τα κατανοησει καποιος σε βαθος ενα μικροεπεξεργαστη ισως μπορεσει να κατανοησει παραπανω και πως λειτουργουν οι σημερινοι επεξεργαστες και τι ακριβως κανει η bios πχ. μπορει πχ με τον μικροελεγκτη να κανει κατι απλο οπως μια αντιστροφη μετρηση και αλλα αρκετα, αν εχει και γνωσεις ηλεκτρονικης-ηλεκτρολογιας μπορει να το προγραμματισει να ανοιγει ενα κυκλωμα συγκεκριμενη ωρα, να ξεκιναει το ποτισμα στο κηπο, να ανοιγει ενα φως στο δωματιο κτλ.
Timonkaipumpa Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 Αχμ.. Για να προγραμματίσει κανείς έναν επεξεργαστή... θέλει: α) Αγορά evaluation board β) Αγορά αναπτυξιακών εργαλείων γ) Στήσιμο του tool chain δ) Κατανόηση του tool chain και του πώς δουλεύει ε) Ανάπτυξη της εφαρμογής του ζ) debug, με το tool chain που έχει Μέχρι και το δ).. είναι χαλαρά 1 μήνας δουλειά... για κάποιον που έχει αρκετή εμπειρία αλλά πρώτη φορά χρησιμοποιεί το tool chain αυτό. Για κάποιον που δεν το έχει ξανακάνει... μπορώ να δώσω και 3ς μήνες full time. Έτσι... πόσο βάσιμη είναι η προτροπή σου; Το έχεις κάνει ποτέ σε μη ελεγχόμενο περιβάλλον; Δηλαδή.. εσύ, σε δικό σου Η/Υ και from the scratch; Και δεν ανέφερα την περίπτωση που μπορεί να χρειαστεί κάποιο Jtag... το οποίο κοστίζει πάνω από 1k €
SpirtouLisS Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 Αχμ.. Για να προγραμματίσει κανείς έναν επεξεργαστή... θέλει: α) Αγορά evaluation board β) Αγορά αναπτυξιακών εργαλείων γ) Στήσιμο του tool chain δ) Κατανόηση του tool chain και του πώς δουλεύει ε) Ανάπτυξη της εφαρμογής του ζ) debug, με το tool chain που έχει Μέχρι και το δ).. είναι χαλαρά 1 μήνας δουλειά... για κάποιον που έχει αρκετή εμπειρία αλλά πρώτη φορά χρησιμοποιεί το tool chain αυτό. Για κάποιον που δεν το έχει ξανακάνει... μπορώ να δώσω και 3ς μήνες full time. Έτσι... πόσο βάσιμη είναι η προτροπή σου; Το έχεις κάνει ποτέ σε μη ελεγχόμενο περιβάλλον; Δηλαδή.. εσύ, σε δικό σου Η/Υ και from the scratch; Και δεν ανέφερα την περίπτωση που μπορεί να χρειαστεί κάποιο Jtag... το οποίο κοστίζει πάνω από 1k € καποιος που δεν εχει επαφη με καποια σχολη ναι εχεις δικιο ειναι πανακριβα αλλα αν εχεις επαφη με καποιο εργαστηριο αναλογικων ψηφιακων κυκλωματων μπορεις αν εχεις το μικροεπεξεργαστη να αποφυγεις καποια εξοδα. κατα τα αλλα εχεις απολυτο δικιο ειναι μεγαλο κοστος. Για να τα δωσει κανεις πρεπει να εχει ή πολυ μερακι ή να ξερει σε τι αποσκοπει. Αλλα και να προσπαθησει καποιος να κατανοησει τετοιες εννοιες χωρις να ξεκινησει απο το 0 ειναι πολυ δυσκολο. πως αλλιως να γινει? Ας τα μαθει θεωρητικα, ας μη τα εφαρμοσει. Με ενα καταλληλο εγχειριδιο ή βιβλια που κυκλοφορουν και δωρεαν αν ψαξει.
Timonkaipumpa Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 Χε.. ήμουν 100000% σίγουρος ότι έγραψες ορμώμενος από εμπειρία σε ελεγχόμενο περιβάλλον. Σκέψου ότι στο εργαστήριο που έχεις κατά νου.. έχει στηθεί το tool chain ήδη από άλλα άτομα. Πολύ πιθανό, να μην μπήκες καν στον κόπο να το στήσεις. Απλά σου έδειξαν τι πειράζεις και που, πολύ πιθανόν να σου είπαν να βάλεις κάποιες τιμές σε κάτι πεδία που δεν ήξερες τι ήταν αλλά το έκανες (για να κάνει σωστό build, για να βλέπει σωστούς registers, και μιας και αναφέρθηκες σε 8051, και για να έχει σωστά memory banks και σωστή αναφορά στους registers για το controlling των memory banks) και δούλεψε... Όταν είσαι μόνος σου ή σε μη ελεγχόμενο περιβάλλον... τότε όλα αυτά πρέπει να τα μάθεις μόνος σου και να τα κάνεις χωρίς να σου πει κανείς τίποτα. Εάν δε, το H/W που έχεις δεν το έχεις ξαναδουλέψει... τότε πρέπει να καταλάβεις μόνος σου τις ιδιαιτερότητές του και αν σετάρεις το tool chain αναλόγως.. Φαντάζομαι ότι θα μπορούσες να φανταστείς τι effort απαιτεί αυτή η διαδικασία σε man months.
defacer Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 Επειδή έχουμε μια προϊστορία οι 2 μας, αυτή σου η απάντηση γράφτηκε ως διόρθωση ή ως συμπλήρωμα στη δική μου παράθεση που χρησιμοποιείς; Δεν είμαι σίγουρος τι έχεις στο μυαλό σου ως διόρθωση και τι ως συμπλήρωμα οπότε δύσκολα θα συνεννοηθούμε εδώ. Πάρτο αν θέλεις σαν επισήμανση ότι αυτό που λες μπορεί να παραπλανήσει κάποιον που δεν γνωρίζει ήδη γιατί δημιουργεί την απορία "αν τα logic gates ελέγχουν το ρεύμα τότε τα transistor τι κάνουν;".
migf1 Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 Βασικά, νομίζω πως ένας προγραμματιστής/πληροφορικάριος δεν χρειάζεται να εμβαθύνει τόσο πολύ αν δεν σκοπεύει να εξειδικευτεί ας πούμε σε μικρο-ηλεκτρονική. Σε γενικές γραμμές αν πάρει ένα θεωρητικό μάθημα σε αρχιτεκτονική υπολογιστών είναι οκ. Απλώς δηλαδή για να μην ακούει κάρνα μαπ και νομίζει πως είναι ξέρω γω κάνας ξάδελφος του κέρμιτ
Timonkaipumpa Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 Και το embedded systems programming; Μην μας σκοτώνεις έτσι ωρέ migf1... είμαστε που είμαστε λίγοι στην Ελλάδα...
migf1 Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 Δεν είμαι σίγουρος τι έχεις στο μυαλό σου ως διόρθωση και τι ως συμπλήρωμα οπότε δύσκολα θα συνεννοηθούμε εδώ. Πάρτο αν θέλεις σαν επισήμανση ότι αυτό που λες μπορεί να παραπλανήσει κάποιον που δεν γνωρίζει ήδη γιατί δημιουργεί την απορία "αν τα logic gates ελέγχουν το ρεύμα τότε τα transistor τι κάνουν;". Όταν ο fuzzy σου επισήμανε το αδόκιμο του όρου compiler για τον assembler άλλα του έλεγες (ότι και καλά θεωρείς πιο χρήσιμες πιο γενικές έννοιες για να είναι πιο κατανοητές στον άλλον). Σε μένα "επισημαίνεις" πως τα logical-gates απαρτίζονται από transistors, άρα δεν ελέγχουν αυτά το ρεύμα αλλά τα transistors. Ας σου επισημάνω λοιπόν κι εγώ πως τα transistors απαρτίζονται από χημικές ουσίες της 4ης ομάδας του περιοδικού πίνακα, η αγωγιμότητα των οποίων επηρεάζεται από την "πρόσμιξή" τους με χημικά στοιχεία των ομάδων 5 και 3. Άρα τα πόδια που ψάχνεις δεν είναι ούτε τα transitors αλλά η σιλικόνη, ο φώσφορος και το βόριο. Αισθάνεσαι ευχαριστημένος τώρα; Και το embedded systems programming; Μην μας σκοτώνεις έτσι ωρέ migf1... είμαστε που είμαστε λίγοι στην Ελλάδα... Όταν μιλάω τεχνικά μου την πέφτει ο ένας, όταν μιλάω πιο γενικά μου την πέφτει ο άλλος, όταν μιλάω απλοϊκά μου την πέφτει κάποιος 3ος... αποφασίστε να ξέρω κι εγώ που θα κινούμαι :lol:
defacer Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 migf1 Αισθάνομαι ευχαριστημένος γιατί πιστεύω ότι και στην περίπτωση του assembler και στην περίπτωση του transistor ο τρόπος που έθεσα τα πράγματα είναι ο καλύτερος αν μετράμε με κριτήριο την κατανόηση κάποιου που δεν ξέρει από το αντικείμενο. Πιστεύω πως έχεις αρκετό μυαλό για να καταλάβεις ότι α) δε χρησιμοποιούμε την ίδια μέθοδο για όλες τις δουλειές και β) όσο περισσότερα γνωρίζει ο συνομιλητής μου τόσο μικρότερη η πιθανότητα να θεωρήσω ότι είναι σκόπιμο να πώ κάτι τέτοιο. Η επιλογή μου έχει διαφορά από τη μία περίπτωση στην άλλη γιατί στη μεν πρώτη κινούμαι με το δεδομένο ότι η λέξη "compiler" είναι ήδη κατανοητή σ' αυτόν που ρωτάει, οπότε το εκμεταλλεύομαι για να ξεκινήσω από ένα γνώριμο μέρος που βρίσκεται πολύ κοντά σ' αυτό που θέλω να καταλήξω. Στη συνέχεια κάνω και τη μικρή διόρθωση ότι ναι μεν αυτό είναι στην ουσία compiler αλλά αυτό το συγκεκριμένο είδος compiler το λέμε assembler και όλα κομπλέ. Στη δεύτερη περίπτωση δεν υπάρχει κάποιο τέτοιο σημείο αναφοράς, οπότε επιλέγω να κινηθώ με βάση το πώς έχουν τα πράγματα physically. Επιπλέον, στην πρώτη περίπτωση ο assembler είναι ένα specialized kind of compiler, με την έννοια ότι χρησιμοποιούνται για τον ίδιο σκοπό (να παράγουν machine code από ένα human readable text). Ακόμα και συ δε νομίζω ότι θα καταφέρεις να πεις "όχι" σ' αυτό το σημείο. Στη δεύτερη περίπτωση δεν ισχύει κάτι τέτοιο. Ορίστε η πρώτη φράση από τα 2 λήμματα για να έχεις μετά να λες ότι τα κόβω και πολύ γρήγορα: "A logic gate is an idealized or physical device implementing a Boolean function..." "A transistor is a semiconductor device used to amplify and switch electronic signals and power." (στην προκειμένη κάνει switch power) Βάσει των παραπάνω νομίζω είναι φανερό ποιανού δουλειά είναι να ελέγχει το ρεύμα και ποιανού να κάνει κάτι άλλο πατώντας πάνω σ' αυτό. Αν τώρα εσύ αισθάνεσαι ευχαριστημένος με το ότι μου την είπες, χαίρομαι για σένα.
Timonkaipumpa Δημοσ. 10 Ιουλίου 2012 Δημοσ. 10 Ιουλίου 2012 Ωρέ παλικάρια.. Δεν πιστεύω να είστε παντρεμένοι; Γιατί έτσι μοιάζουν οι διάλογοι σας! :D
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα