Εργαστήριο Τεχνολογίας Λογισμικού
0 votes
443 views

Προσπαθώ μέσω διαδικτύου να βρω πληροφορίες για assembly του x86 σε περιβάλλον Linux. Από όσο καταλάβα δεν υπάρχει κάποιος standard τρόπος σύνταξης. Γνωρίζει κάποιος μήπως κάποια ιστοσελίδα που να καθοδηγεί στην συγγραφή κώδικα assembly;

in random by (2.9k points) | 443 views
+1

Τι εννοείς δεν υπάρχει στάνταρ τρόπος σύνταξη; Στη x86 assembly υπάρχουν 2 τρόποι σύνταξης, η Intel syntax και η AT&T syntax (friends don't let friends write in AT&T syntax :) ). Ο nasm αν δεν απατώμαι παίζει σε Intel syntax, ενώ ο gnu assembler (gas) δουλεύει και στα δύο (βάζεις ένα directive πάνω πάνω).

Για τις ψευδοεντολές ή για τον ορισμό μεταβλητών, τσέκαρε το manual του κάθε assembler. Επίσης, gcc -S is your friend :)

+1

Ισως αν μας πεις τι θέλεις να κάνεις περίπου, να μπορέσουμε να σου δώσουμε πιο συγκεκριμένες απαντήσεις.

Πχ αν απλά θέλεις να δεις πως δουλεύει η assembly, τότε το να ξεκινήσεις από x86 ίσως να μην είναι η καλύτερη ιδέα.

0

Πιο πολύ επιθυμώ αυτό που λέει ο @Lonias. Να μπω στην λογική του δουλεύω απευθείας με το τι θα κάνει ο επεξεργαστής. Απλά είπα x86 επειδή ο υπολογιστής μου είναι x86. Προτείνετε δηλαδή να δω την assembly κάποιου άλλου επεξεργαστή και να την δουλέψω σε κάποιον emulator? Αν ναι, ποιου επεξεργαστή και πού θα μπορούσα να βρω περισσότερες πληροφορίες για αυτόν;
Ευχαριστώ εκ των προτέρων!

–1

Πάρε το μάθημα λειτουργικά της Υ

1 Answer

+1 vote
Best answer

Δεν απαντάω καθαρά για x86, αλλά γενικά για assembly.


Από καθαρά εκπαιδευτικό point of view, δεν ξέρω ποιά είναι καλύτερη/ευκολότερη για ένα αρχάριο. Η μοντέρνα x86 έχει πάρα πολλές εντολές και δυνατότητες που χάνεις λίγο την μπάλα, από την άλλη με κάποιο tutorial που σε πάει βήμα βήμα δεν ξέρω πως θα είναι.

Στην σχολή διδάσκονται ή χρησιμοποιούνται (και μπορείς στο wiki να βρεις references και πηγές για κάθε γλώσσα):

  • LC3 (3ο εξάμηνο)
  • MIPS (4ο εξάμηνο)
  • 8085 (ίσως να μην διδάσκεται πια(;) (6 & 7 εξάμηνο)
  • 8086 (προκάτοχος της x86) (6 & 7 εξάμηνο)
  • AVR (6 & 7 εξάμηνο)
  • ARM (9ο εξάμηνο)

Οι δύο τελευταίες είναι και γλώσσες που χρησιμοποιούνται σε πραγματικά συστήματα ( π.χ. Arduino, αλλά και σε πολλά άλλα).

Σίγουρα προτείνω να ψάξεις για emulator, και μάλιστα όσο περισσότερα debugging features έχει, τόσο λιγότερο θα σπας το κεφάλι σου.

Υ.Γ. Ήμουν έτοιμος να προτείνω το The Art of Assembly Language (γιατί είναι το μόνο βιβλίο που ακούσει πάνω στο θέμα), αλλά μετά είδα τις κριτικές στο Amazon και δεν ήμουν σίγουρος. Γενικά όμως μπορείς να τσεκάρεις τα διάφορα σχετικά βιβλία που εμφανίζονται και να διαλέξεις ένα που σου φαίνεται ότι σου ταιριάζει.

by (2.2k points)
selected by
+1

MIPS είναι 5ο στην Αρχιτεκτονική Υπ.

+1

Έχεις απόλυτο δίκιο. Εκ παραδρομής είπα 4 εξάμηνο.

0

Ωραία! Ευχαριστώ πολύ για την απάντηση!

+2

Και για κάτι λίγο πιο high-level, LLVM IR (8ο εξάμηνο, compilers).

301 questions

289 answers

288 comments

769 users