Pages

Τρίτη 22 Απριλίου 2025

Συντακτικός Χρωματισμός Γλώσσας Assembly MSP430 στο Code Composer Studio - Theia

Εισαγωγή

Όσοι με γνωρίζουν, ξέρουν πως η συμπάθειά μου για τους μικροελεγκτές MSP430 της Texas Instruments είναι μεγάλη. Είναι 16 bit, πολυ χαμηλής κατανάλωσης, με μπόλικο διαθέσιμο περιφερειακό hardware και γενικά είναι πολύ φιλικοί στη χρήση σε προχωρημένα κυκλώματα. Βέβαια, άλλη μια μεγάλη συμπάθεια την έχω και στο λειτουργικό Linux που εδώ και πάρα πολλά χρόνια (από το 2ο μισό της δεκαετίας του '90) κάνει τα μηχανήματά μου να λειτουργούν άψογα. Ο συνδυασμός είναι που δημιουργεί και τη σημερινή ανάρτηση :)

Η εταιρία Texas Instruments, εδώ και αρκετά χρόνια (εγώ γνώρισα τη σειρά MSP430 από το 2003) έχει δημιουργήσει το περιβάλλον προγραμμαστισμού Code Composer Studio, ή αλλιώς CCS. Το CCS από κάποια έκδοση και μετά (δε θυμάμαι ποια) είναι βασισμένο στο περιβάλλον Eclipse, όπως και περιβάλλοντα από άλλες εταιρίες για τον προγραμματισμό των δικών τους μκροελεγκτών. Γενικά η πλατφόρμα Eclipse χρησιμοποιείται πάρα πολύ σε περιβάλλοντα προγραμματισμού μικροελεγκτών μιας και είναι αρκετά ευέλικτη και επεκτάσιμη. Η δύναμη του ανοικτού λογισμικού!

Όλα αυτά τα χρόνια, τα project που έχω φτιάξει με τους εν λόγω μικροελεγκτές και to CCS είναι πραγματικά άπειρα! Το CCS είναι, φυσικά, το εργαλείο με το οποίο φτιάχνω τον κώδικα κάθε φορά. Η γλώσσα που χρησιμοποιώ είναι η assembly μιας και συνήθως έχω να κάνω με ευαίσθητα χρονικά περιθώρια κατά την εκτέλεση του κώδικα, αλλά και του μεγάλου αριθμού βιβλιοθηκών που έχω χτίσει και επαναχρησιμοποιώ, με ελάχιστες τροποποιήσεις.

Τον τελευταίο καιρό και με την εμφάνιση της σειράς των μικροελεγκτών MSPM0, η Texas Instruments ξεκίνησε τη μετάβαση του CCS στην πλατφόρμα Eclipse-Theia. Εδώ είναι που ξεκινάει η ανάγκη για τη δημιουργία ενός extension για χρωματική σύνταξη της γλώσσας assembly για τους MSP430... Αλλά ας τα πάρουμε όλα από την αρχή.

Code Composer Studio και Eclipse Theia

Εδώ και λίγα χρόνια, η μαμά εταιρία ξεκίνησε μια προσπάθεια να αλλάξει το περιβάλλον στο οποίο βασιζόταν το CCS και να περάσει σταδιακά στην πλατφόρμα Eclipse-Theia. Η Eclipse Theia είναι μια νεότερη, ευέλικτη πλατφόρμα ανάπτυξης που μοιάζει οπτικά με το VS Code, αλλά με σημαντικές τεχνολογικές και αρχιτεκτονικές διαφορές από την κλασική Eclipse IDE. Tα βασικά χαρακτηριστικά και oi διαφορές τους φαίνονται στον ακόλουθο πίνακα:

Σύγκριση Eclipse IDE με Eclipse Theia
Χαρακτηριστικό Eclipse IDE Eclipse Theia
Αρχιτεκτονική Μονολιθική εφαρμογή (Desktop only) Διαχωρισμός client/server (cloud-ready)
Επεκτασιμότητα Χρησιμοποιεί παλιότερο plugin system (OSGi) Υποστηρίζει VS Code extensions (και δικά της plugins)
Τεχνολογία Java/SWT (παλιότερα GUI frameworks) HTML/CSS/TypeScript (modern web stack)
Cloud/Remote Development Απαιτεί "εξωτερικές" λύσεις (π.χ. Eclipse Che) Επίσημη υποστήριξη για cloud και containers
Διαθέσιμες Εκδόσεις Μόνο desktop εφαρμογή Λειτουργεί ως web app ή desktop (Electron)
Απίτηση σε Εξοπλισμό Βαρύτερο, με πιο πολλά pre-installed tools Πιο ελαφρύ και γρήγορο (συγκρίσιμο με VS Code)

Και οι δύο πλατφόρμες είναι ανοικτού κώδικα και υποστηρίζονται από το Eclipse Foundation.

Πλεονεκτήματα παλιόυ Eclipse IDE

  1. Ωριμότητα:Maturity:
    • Έχει περισσότερα built-in tools (π.χ., JDT για Java, CDT για C/C++).
    • Καλύτερη υποστήριξη για legacy projects (π.χ., Swing, RCP).
  2. Δεσμευμένη Κοινότητα:
    • Πιο πολλά plugins και εκπαιδευτικό υλικό για ειδικές χρήσεις (π.χ., enterprise Java).
  3. Ολοκληρωμένα Features:
    • Έτοιμα εργαλεία για debugging, profiling, και testing σε βάθος.

Πλεονεκτήματα Eclipse Theia

  1. Cloud-First:
    • Σχεδιάστηκε για cloud-based environments (π.χ., Docker, Kubernetes).
    • Μπορεί να τρέξει ως web application (π.χ., σε browser) ή ως desktop app.
  2. Συμβατότητα με VS Code:
    • Υποστηρίζει extensions του VS Code (μέσω του OpenVSX marketplace), αλλά και δικά της plugins.
    • Παρόμοιο UI/UX με το VS Code (π.χ., activity bar, side panels).
  3. Ευελιξία:
    • Επιτρέπει εξαιρετική προσαρμογή (π.χ., δημιουργία custom IDEs για συγκεκριμένες ανάγκες).
    • Ιδανική για embedded και IoT development (όπως ο MSP430).
  4. Ταχύτερη Εκκίνηση:
    • Λιγότερο "φορτωμένη" από την κλασική Eclipse, με πιο γρήγορη απόκριση.

Βλέπουμε πως η πλατφόρμα Theia είναι δημιουργημένη με βλέμα στις τρέχουσες τεχνολογίες και δυναμικές της δημιουργίας software. Συνεπώς είναι πολύ λογική η κίνηση της Texas Instruments να μεταβεί στη νέα πλατφόρμα για το Code Composer Studio. Αυτή τη στιγμή που δημιουργείται το παρόν άρθρο, το CCS Theia βρίσκεται στην έκδοση 20.1.1.8.

Code Composer Studio Theia

Το Code Composer Studio (CCS) Theia είναι η νεότερη, cloud-enabled έκδοση του παραδοσιακού CCS της Texas Instruments. Αποτελεί μια μοντέρνα εναλλακτική για ανάπτυξη ενσωματωμένων συστημάτων (MSP430, Sitara, C2000 κλπ.), με τεχνολογικές βελτιώσεις και νέες δυνατότητες. Τα χαρακτηριστικά του είναι:

  1. Μοντέρνα Αρχιτεκτονική:
    • Βασίζεται σε Eclipse Theia (web/cloud-ready) αντί για την παλιά πλατφόρμα Eclipse IDE.
    • Υποστηρίζει και desktop (Electron) και cloud-based ανάπτυξη (π.χ., μέσω Docker).
  2. VS Code-like Εμπειρία:
    • Παρόμοιο UI με το VS Code (activity bar, side panels, terminal integration).
    • Υποστηρίζει extensions του VS Code (μέσω του OpenVSX marketplace).
  3. Cloud & Remote Development:
    • Λειτουργεί σε containers (π.χ., Docker) για ευκολότερη διαχείριση dependencies.
    • Ιδανικό για ομαδικές εργασίες ή ανάπτυξη σε απομακρυσμένα συστήματα.
  4. Βελτιωμένη Επεκτασιμότητα:
    • Ευκολότερη ενσωμάτωση νέων εργαλείων και γλωσσών (μέσω TypeScript/JavaScript).
    • Διαχωρισμός μεταξύ frontend (browser) και backend (compiler/debugger).
  5. Ενσωματωμένα Εργαλεία TI:
    • Διατηρεί όλα τα γνωστά εργαλεία του CCS (π.χ., MSP430 compiler, debugger, EnergyTrace).
    • Επίσημη υποστήριξη για TI SDKs και πακέτα BSPs.

Πλεονεκτήματα του CCS Theia

  • Γρήγορη προσαρμογή: Εύκολη προσθήκη νέων γλωσσών ή εργαλείων (π.χ., Python για scripting).
  • Cross-platform: Λειτουργεί σε Windows/Linux/macOS και ως web app.
  • Debugging anywhere: Ο debugger μπορεί να τρέξει σε απομακρυσμένο μηχάνημα (π.χ., cloud server).
  • Σύγχρονη ανάπτυξη plugins: Με TypeScript αντί για Java (πιο προσβάσιμο για web developers).

Πιθανά Μειονεκτήματα

  • Λιγότερα plugins: Η κοινότητα ακόμα μεταναστεύει από το κλασικό Eclipse.
  • Όχι όλα τα features: Κάποιες προηγμένες λειτουργίες του classic CCS μπορεί να λείπουν.
  • Εξάρτηση από browsers: Η web έκδοση μπορεί να έχει περιορισμούς σε offline λειτουργία.

Σε γενικές γραμμές, το CCS Theia είναι ένα πολλά υποσχόμενο βήμα προς τη μελλοντική ανάπτυξη ενσωματωμένων συστημάτων, ιδιαίτερα αν είναι αναγκαία η ολοκλήρωαη cloud ή αν κάποιος προτιμάει μια VS Code-like εμπειρία. Ωστόσο, αν είναι απαραίτητα κάποια legacy plugins ή προηγμένες λειτουργίες του κλασικού CCS, ίσως αξίζει η αναμονή μέχρι να ωριμάσει.

Syntax Highlighting

Όλοι όσοι ασχολούνται με τον προγραμματισμό θα γνωρίζουν πόσο σημαντική είναι η χρωματική σύνταξη του κώδικα. Αν μη τι άλλο, η εμφάνιση των σχολίων με διαφορετικό χρώμα απ' ότι ο υπόλοιπος κώδικας, είναι πολύ σημαντική. Φυσικά, όλη η χρωματική σύνταξη που βοηθάει στο να αναγνωρίσουμε κάθε τι μέσα σε ένα κώδικα με μια απλή ματιά χωρίς καν να χρειαστεί να τον διαβάσουμε είναι από μόνο του ένα μεγάλο βοήθημα.

Κάπως έτσι ξεκινάει και η σημερινή ανάρτηση... Τό κλασικό, παλιό CCS υποστηρίζει άψογα τη χρωματική σύνταξη, την οποία μάλιστα μπορούμε να επιλέξουμε ακόμα και τα χρώματα που θέλουμε να εμφανίζεται το κάθε στοιχείο. Ενώ το CCS Theia υποστηρίζει χρωματική σύνταξη σε ανώτερες γλώσσες προγραμματισμού, όπως C/C++, για την assembly ούτε καν υπάρχει στα πλάνα των κατασκευαστών του. Όσο για την ήδη υπάρχουσα χρωματκή σύνταξη, η επιλογή των χρωμάτων έχει γίνει από τους κατασκευαστές του CCS Theia και ο χρήστης δεν έχει τη δυνατότητα να τα αλλάξει!

Η συμπάθειά μου για τη γλώσσα assembly είναι γνωστή. Όμως το να έχω ένα περιβάλλον προγραματισμού χωρίς χρωματική σύνταξη είναι λίγο οδυνηρό, μιας κι έχω καλομάθει ακόμα από την εποχή του ZX Spectrum και του Amstrad 6128 που προγραμμάτιζα σε assembly του Z80, με χρωματική σύνταξη... βασική χρωματική σύνταξη αλλά υπήρχε! Βασικά, ήμουν της άποψης να αφήσω λίγο το Theia να ωριμάσει και μέχρι τώρα χρησιμοποιούσα το παλιό καλό CCS. Όμως, μιας και χρησιμοποιώ το openSUSE Tumbleweed το οποίο βάζει πάντα τις τελευταίες βιβλιοθήκες κλπ, μετά από κάποια αναβάθμιση το CCS σταμάτησε να λειτουργεί! Όχι, πως αυτό αργά ή γρήγορα δε θα συνέβαινε, ούτως ή άλλως. Και μιας κι έχει σταματήσει η υποστήριξή του από τη μαμά εταιρία, η χρήση του CCS Theia είναι πλέον μονόδρομος.

Αρχικά έγραφα τον κώδικα στο αγαπημένο μου Kate, στο οποίο εδώ και αρκετά χρόνια έχω φτιάξει χρωματική σύνταξη για την assembly του MSP430, ενώ κάποια στιγμή το εξέλιξα συμπληρώνοντας και τα νέα δεδομένα του MSP430X. Όμως, το να γυρίζεις από editor σε editor είναι λίγο κουραστικό. Έτσι, πήρα την απόφαση να δω πως μπορώ να προσθέσω χρωματική σύνταξη στο CCS Theia. Αρχικά να αναφέρω πως δεν έιχα ιδέα πώς θα μπορούσε να γίνει αυτό, αλλά έψαχνα ν βρω τίποτα έτοιμα extensions που να κάνουν τη δουλειά μου. Βρήκα κάποιο extension που έκανε για το VS Code και ψάχνοντας τριγύρω βρήκα πως το Theia υποστηρίζει τα VS Code Extensions. Προσάθησα να δω πως θα το εγκαταστήσω... Μου πήρε λίγο χρόνο και μερικές ταρζανιές και τελικά βρήκα τι να κάνω και που θα περάσω τον κατάλογο του extension για να το δει το Theia και να το χρησιμοποιήσει. Όμως, η χρωματική σύνταξη που μου προσεφερε δεν ήταν αυτό που ήθελα. Έτσι, μετά από αρκετό διάβασμα και reverse engineering σε άλλα plugins βρήκα πως μπορώ να φτιάξω ένα δικό μου extension επάνω στο ίδιο το CCS Theia.

Τελικό Syntax Highlighting Extension για το CCS Theia

Και αφού έβαλα κάτω το documentation του TextMate, του VS Code και του Eclipse Theia τελικά κατάφερα να δημιουργήσω ένα extension που να μου παρέχει όσα χρειάζομαι. Όλα; Περίπου. Αυτό που δε μπόρεσα να κάνω είναι να επιλέγω ακριβώς το χρώμα που θα ήθελα να εμφανίζεται το κάθε στοιχείο. Όμως, χρησιμοποιώντας τα ήδη υπάρχοντα χρώματα έχω αυτό που με βοηθάει, πλέον, να γράψω τον κώδικά μου στην αγαπημένη μου γλώσσα.

Αρχικά ας δούμε ποια είναι τα υπάρχοντα χρώματα. Για να μπορέσω να τα βρω, αρχικά έψαχνα αρχεία στα οποία περιγράφονται. Βασικά έτσι θα μπορούσα να τα αλλάξω, αλλά... δεν βρήκα τίποτα. Έτσι, πέρασα στο επόμενο βήμα, να χρησιμοποιήσω το εργαλείο CTRL+SHIFT+P => Developer: Inspect Tokens. Από τη στιγμή που το TextMate ορίζει κάποια classes (βλ. TextMate Language JSON) μπορούμε, με υπομονή, να τα δοκιμάσουμε όλα. Έτσι, βγαίνει το ακόλουθο στιγμότυπο:

Colour Classes Set By TextMate

Για να δημιουργηθεί το στιγμιότυπο με τα χρώματα χρησιμοποιήθηκε το LibreOffice Calc ενώ μέσα στα macros μπήκε κώδικας του JohnSUN που βρίσκεται στο forum του LiberOffice.org

Οι δυνατότητες που έχουν μπει στο extension είναι αρκετές. Ας τις δούμε όπως περιγράφοτναι μέσα στο readme.md του extension:

  • Ετικέτες: Οι ετικέτες είναι λεκτικά που ορίζονται να δείχνουν συγκεκριμένες τιμές, όπως την τρέχουσα θέση προγράμματος, μια σταθερά, κλπ. Για να δηλωθεί μια ετικέτα πρέπει να εμφανιστή στην αρχή-αρχή της γραμμής. Μια ετικέτα μπορεί να περιέχει γράμματα, κεφαλαία ή μικρα, ψηφία, την κάτω παύλα ('_') και το δολάριο ('$'), ενώ ο πρώτος της χαρακτήρας δε μπορεί να είναι ψηφίο ή δολάριο. Μπορεί να ακολουθείται προεραιτικά από ':'.Φυσικά, όταν χρησιμοποιούνται στον κώδικα για ανάκτηση της τιμής της ετικέτας, τότε δεν μπαίνει η ':'.
  • Τοπικές Ετικέτες: Οι τοπικές ετικέτες χρησιμοποιούνται μέσα σε macros. Όταν ένα macro γίνεται expand σε ένα σημείο του προγράμματος, αν ορίζει συγκεκριμένες ετικέτες, τότε στην περίπτωση που το macro χρησιμοποιείται παραπάνω από μια φορές, η ίδια ετικέτα θα ορίζεται και αυτή παραπάνω από μια φορές. Το αποτέλεσμα θα είναι η δημιουργία ένός σφάλματος. Γι' αυτό το λόγο περιγράφουμε τοπικές ετικέτες, στις οποίες, κάθε φορά που ένα macro γίνεται expand, ο compiler προσθέτει και έναν αριθμό μοναδικό ώστε να αποφευχθεί το πρόβλημα του επαναορισμού. Αυτές είναι κανονικές ετικέτες οι οποίες ακολουθούνται από το Αγγλικό ερωτηματικό ('?'). Μέσα στον κώδικα, όταν γίνεται χρήση της ετικέτας για ανάκτηση της ορισθείσας τιμής, το τελικό '?' είναι απαραίτητο να υπάρχει.
  • Ετικέτες Αντικατάστασης: Επίσης σε λειτουργίες macro υπάρχει η περίπτωση να θέλουμε να δωθεί μια τιμή από τις παραμέτρους. Αυτή η τιμή να αντικαταστήσει ένα τμήμα μιας άλλης ετικέτας. Έτσι, δημιουργούμε την ετικέτα αντικατάστασης, η οποία είναι μια κανονική ετικέτα που πριν και μετά από αυτή υπάρχψει το σύμβολο ':'. Κατά τη διάρκεια της μεταγλώτισσης αυτό το τμήμα της ετικέτας αντικαθίσταται με την ίδια της την τιμή. Ένα παράδειγμα είναι η ετικέτα ":count:"
  • Σχετικές ετικέτες: Είναι ατικέτες που αντικαθίστανται από κατάλληλη τιμή του PC στο σημείο που έχουν οριστεί, όπως η ετικέτα '$'.
  • Μνημονικά: Τα μηνμονικά είναι ουσιαστικά οι εντολές που γνωρίζει ο επεξεργαστής μας. Το extension αναγνωρίζει όλα τα μηνμονικά που περιέχει η οικογένεια MSP430 και η εκτεταμένη οικογένεια MSP430X. Τα μνημονικά χρωματίζονται διαφορετικά:
    1. Βασικά μνημονικά: Είναι τα μνημονικά που εκτελούν κανονικές λειτουργίες. Η οικογένεια MSP430 είναι τύπου RISC κι έτσι υποστηρίζει 27 βασικές εντολές.
    2. Μνημονικά αλλαγής της ροής του προγράμματος: Μνημονικά όπως τα JMP, BR, CALL και RET.
    3. Εξομοιούμενα μνημονικά: Είναι μνημονικά που θα μπορούσαν να χρησιμοποιηθούν, αλλά στην πραγματικότητα εξομοιώνουν κάποιες άλλες εντολές από ττα βασικά μνημονικά. Π.χ. ένα τέτοιο είναι το INC Rx όπου στην πραγματικότητα αυτό αντικαθίσταται από το ADD #1,Rx. Τέτοια μνημονικά υπάρχουν 24 μέσα στην assembly του MSP430 και αναγνωρίζονται από το extension δείχνοντάς τα διαφορετικά. Αυτό είναι αρκετά χρήσιμο αν κάποιος προσπαθεί να δει τους κύκλους που χρειάζεται μια εντολή ή το χώρο που καταλαμβάνει μέσα στη μνήμη, μιας και αυτό θα πρέπει να γίνει με βάση την ακριβή εντολή που εκτελείται.
    4. Εξομοιούμενα μνημονικά αλλαγής ροής προγράμματος: Είναι μνημονικά, όπως η εντολή RET που εξομοιώνεται με την εντολή MOV @SP+,PC και αλλάζει την ομαλή ροή του προγράμματος.
    5. Εκτεταμένα βασικά μνημονικά: Είναι μνημονικά της οικογένειας MSP430X που δεν υπάρχουν στην MSP430. Αυτά έχουν τη δυνατότητα να λειτουργούν με 20-bit καταχωρητές, για προσπέλαση σε μεγαλύτερη μνήμη και επεξεργασία 20-bit τιμών.
  • Εκτεταμένα εξομοιούμενα μνημονικά: Όπως η οικογένεια MSP430 έχει μνημονικά που τα εξομοιώνει με χρήση βασικών, έτσι γίνεται και με την οικογένεια MSP430X. Με τον ίδιο τρόπο θα δούμε την εντολή INCX Rx να εξομοιώνεται με χρήση της βασικής εντολής ADDX #1,Rx.
  • Εκτεταμένα μνημονικά αλλαγής ροής προγράμματος: Ανήκουν στην οικογένεια MSP430X και είναι μνημονικά που εκμεταλεύονται την επεκταμένη μνήμη 20-bit που χρησιμοποιεί. Αποτελείται από μνημονικά όπως CALLA που μπορεί να κάνει κλήση σε μια υπορουτίνα που βρίσκεται σε όλο το φάσμα της χρησιμοποιούμενης μνήμης και πάνω από τα πρώτα 64ΚΒ.
  • Εκτεταμένα εξομοιούμενα μνημονικά αλλαγής ροής προγράμματος: Εκτεταμένα μνημονικά αλλαγής ροής του προγράμματος, όπως η RETA που εξομοιώνεται από την εντολή MOVA @SP+,PC.
  • Επιθέματα των εντολών: Μια εντολή μπορεί να προσπελάσει τιμές ενός byte, μιας λέξης ή μιας 20-bit λέξης. Έτσι, υπάρχουν τα επιθέματα .B, .W και .A αντίστοιχα.
  • Καταχωρητές: Οι οικογένειες MSP430(X) έχουν 16 καταχωρητές, τους R0 έως R15. Κάποιοι από αυτούς έχουν ειδική λειτουργία, όπως ο R0 που είναι ο PC, ο R1 που είναι ο SP και ο R2 που είναι ο SR.
  • Αριθμούς: Δυαδικούς, οκταδικούς, δεκαδικούς ή δεκαεξαδικούς, είτε με χρήση προθέματος, όπως ο 0xFF35 είτε με χρήση επιθέματος, όπως ο 0FF35h.
  • Σύμβολα: Αριθμητικά ή λογικών πράξεων, κλπ.
  • Λεκτικά: Είτε με χρήση απλών είτε με χρήση διπλών εισαγωγικών.
  • Εκτεταμένοι χαρακτήρες: Οι ειδικοί χαρακτήρες που χρησιμοποιούνται όπως οι απλοί όταν προηγείται η '\', όπως ο '\n', κλπ.
  • Προ-ορισμένες συναρτήσεις: Από τον preprocessor ορίζονται κάποιες βασικές συναρτήσεις, όπως οι $HI16(), $LO16() ή $isdefed(). Αυτές οι συναρτήσεις πάντα ξεκινάνε από $
  • Εντολές του preprocessor: Οδηγείες που δίνουμε στον preprocessor ώστε να διαμορφώσει κατάλληλα το πρόγραμμά μας, όπως .align για να κάνει στοίχιση κάποιας μεταβλητής σε κατάλληλη θέση στη μνήμη, ή .sect που ορίζει τον τομέα της μνήμης στην οποία θα μπει το ακόλουθο τμήμα προγράμματος, κλπ.
  • Σχόλια: Είναι γνωστή η δύναμη των σχολίων στον κώδικά μας. Στην assembly υποστηρίζονται μόνο σχόλια μιας γραμμής. Αυτά είτε ξεκινάνε με ';' σε οποίοδήποτε σημείο μιας γραμμής (αρχή ή όχι), είτε ξεκινάνε με '*', αλλά αυτό πρέπει να είναι στην αρχή-αρχή της γραμμής.
  • Εμφωλευμένα σχόλια: Πολλές φορές μέσα στον κώδικά μας, εκτός από την επεξήγηση της λογικής του προγράμματος, βάζουμε και μηνύματα, είτε προς εμάς, για να θυμηθούμε κάτι σημαντικό που πρέπει να κάνουμε, είτε προς άλλους με τους οποίους συνεργαζόμαστε. Το extension δίνει τη δυνατότητα να δημιουργήσουμε τέτοιου είδους σχόλια. Αυτό γίνεται με κάποιες κωδικές λέξεις. Οι λέξεις που υποστηρίζονται είναι οι NOTE, INFO, TODO, TO-DO, FIXME, FIX-ME, FIXIT, FIX-IT και BUG. Όταν μέσα στα σχόλια εμφανίζεται αυτή η ετικέτα ακολουθούμενη από ':', τότε αναγνωρίζεται η εκκίνηση ενός εμφωλευμένου σχολίου και χρωματίζονται διαφορετικά. Προεραιτικά, η κωδική λέξη μπορεί να ακολουθείται από '@' και ένα username (π.χ. BUG@eliaschr:) ή να ακολουθεί ένα username με '@' (όπως eliaschr@TODO:). Το εμφωλευμένο σχόλιο συνεχίζεται σε όλες τις ακόλουθες γραμμές σχολίων, ακόμα και των κενών, μέχρι
    1. Εμφάνιση της κωδικής λέξης ακολουθούμενης από #end (όπως NOTE#end) ή
    2. Εμφάνισης μιας γραμμής κώδικα

Δύο ακόμα προσθήκες που έχουν γίνει στο Assembly Extension για CCS-Theia είναι η προσθήκη κάποιων αυτομάτων σχολίων. Πιο συγκεκριμένα, κάθε φορά που ξεκινάμε κάποιο αρχείο το πρώτο πράγμα που είναι καλό να γίνεται είναι η δημιουργία ένός τμήματος σχολίων στην αρχή του, που να περιγράφει το project στο οποίο ανήκει, το τι κάνει κλπ. Έτσι, όταν είναι ενεργοποιημένο το extension και γράψουμε τη λέξη #intro αυτόματα θα εμφανιστούν κάποια σχόλια που με τη χρήση του πλήκτρου tab μπορούμε να πάμε από τμήμα σε τμήμα για να το συμπληρώσουμε. Μπορούμε, λοιπόν, να συμπληρώσουμε το όνομα του project, το ονοματεπώνυμο του δημουργού, την ημερομηνία και κάποια περιγραφή για το αρχείο.

Ο δεύτερος τύπος σχολείων που υποστηρίζεται είναι μια εισαγωγή σε κάθε συνάρτηση. Με την πληκτρολόγηση της λέξης #head προστίθεται ένα τμήμα σχολίων για περιγραφή της συνάρτησης στην οποία ανήκει ο ακόλουθος κώδικας. Πιο συγκεκριμένα έχουμε τη δυνατήτα να συμπληρώσουμε μια περιγραφή, ποια είναι η είσοδος και η έξοδος της συνάρτησης, ποιους καταχωρητές χρησιμοποιεί,χρήση της stack, κλπ. Ακολουθεί ένα στιγμιότυπο που δείχνει το εν λόγω τμήμα.

Συμπεράσματα

Το CCS-Theia είναι ένα πολύ ωραίο περιβάλλον προγραμματισμού των μικροελεγκτών της εταιρίας Texas Instruments. Η συγκεκριμμένη δουλειά έχει γίνει για τις οικογένειες MSP430 και MSP430X και για τον προγραμματισμό τους σε γλώσσα Assembly. Δυστυχώς, πολλοί κατασκευαστές αγνοούν τη δύναμη της assembly και δίνουν μεγάλο βάρος μόνο στις γλώσσες υψηλότερου επιπέδου, όπως C/C++, Python κλπ. Όμως η χρήση ενός μικροελεγκτή πολλές φορές δε δίνει την ευχέρεια σε ένα προγραμματιστή να είναι αρκετά "τεμπέλης", αντιθέτως είναι πολλές οι φορές που η χρήση των πηγών του μικροελεγκτή πρέπει να γίνεται με φειδώ και σύνεση. Είναι αλήθεια πως η δύναμη των σημερινών μικροεπεξεργαστών έχει κάνει τους προγραμματιστές να θεωρούν το optimization κάτι που απλά κάνει ο compiler και η επεξεργαστική ισχύς είναι τέτοια που μπορεί να κάνει τη δημιουργία ενός μη efficient κώδικα να μη φαίνεται. Πάντως η γλώσσα assembly είναι μακριά από το να σταματήσει να χρησιμοποιείται!

Το εν λόγω extension καλύπτει την ανάγκη δημιουργίας κώδικα σε assembly για τις δύο οικογένειες μικροελεγκτών με επιτυχία, όσον αφορά τη χρωματική σύνταξη και την υποβοήθηση συγγραφής προγραμμάτων στο Code Composer Studio - Theia. Είναι, ελεύθερο να το κατεβάσει ο καθένας και να το χρησιμοποιήσει.

Ηλίας Χρυσοχέρης

Δεν υπάρχουν σχόλια: