Δημοσιεύτηκε: 02 Νοέμ 2008, 14:50
thodoris_turtle έγραψε:ο κωδικας που θελω να μετατρεψω σε Nasm 32 bit για linux ειναι ο :
http://pastebin.com/m36cd2c12
οταν πληκτρολογο στο terminal την εντολη gcc -S Micro1c.c μου εμφανιζει σφαλματα δεν ξερω γιατι συγκεκριμενα μου εμφανιζει τα παρακατω:
http://www.imageshack.gr/view.php?file= ... tes7bw.png
εχεις καμια ιδεα ?
edit:
χμμ μαλων σε λαθος κατευθυνση κινουμε πρεπει να παρω τον source κωδικα για MASM 16 bit και να προσπαθησω να το μετατρεψω σε NASM 32 bit
Ξερω οτι εκει που λεει ας πουμε ax πρεπει εγω να βαλω το eax .
Και το θεμα της διευθυνσειωδοτησης πρεπει να αλλαξει δεν ειναι δηλαδη μονο να πειραξω το ax και να τα κανω eax
εκει μπερδευομαι εγω πιστευω λογικο ειναι αυτο
να ρωτησω και κατι αλλο οσων αφορα για το gcc -S FileName
εστω οτι θελω να μετατρεψω σε assembly το http://pastebin.com/m1b0e7b22
και στο terminal πληκτρολογο gcc -S printf1.c
και μου εμφανιζει στο τρεχων καταλογο το printf1.s η επεκταση s τι σημαινει. ειναι απο το source δηλ. source assembly? αυτο?
καλη φαση αυτη δηλαδη ας πουμε οτι καποιος βαζει σαν εργασια μια bubble sort να το κανουμε σε assembly αρα εγω σαν βοηθεια μπορω να χρησιμοποιησω αυτα που λες
αλλα τελος παντον βγαινω εκτος θεματος το προβλημα μου ειναι τωρα να μετατρεψω MASN 16 bit σε NASM 32 bit
αυτο ειναι τωρα το προβλημα μου.
Στο στιγμιότυπο (screenshot) που δείχνεις, γίνεται αναφορά για σφάλμα στη γραμμή 23. Υπάρχει κάποιος παράξενος χαρακτήρας εκεί, πρέπει να τον σβήσεις.
Ακόμα, στον κώδικα υπάρχει αναφορά για cdecl, που είναι μια εντολή που έχει να κάνει με περιβάλλον DOS/Windows.
Σε Linux και gcc, το cdecl είναι προεπιλογή οπότε δε χρειάζεται να το βάλεις. Κοίταξε στο
http://www.programmersheaven.com/2/Calling-conventions
για περισσότερα.
Το πρόγραμμα που θέλεις να μεταγλωττίσεις δεν είναι πλήρες πρόγραμμα. Για παράδειγμα δεν υπάρχει main().
Οπότε μπορείς μόνο να μεταγλωττίσεις προς «αρχείο αντικειμένου» (object file). Δηλαδή,
gcc -c -S Filename.c
Εδώ μπαίνει ένα -c που σημαίνει να μην παραχθεί ολοκληρωμένο εκτελέσιμο.
Γενικά, σημαντικό πιστεύω για σένα είναι να βρεις τεκμηρίωση που να περιγράφει αυτά που θέλεις να μάθεις.
Προσπάθησε να κάνεις αναζήτηση με π.χ «linux γλώσσα μηχανής» για να βρεις σχετικές ελληνικές σελίδες, αν υπάρχουν.
Υπάρχουν ξένες σελίδες π.χ. στο nasm, που εκεί ίσως χρειαστεί να έχεις το Google Translate από κοντά.