Programmazione.it v6.2
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Chat Forum
Strumenti di analisi statica per rilevare problemi di endian
Scritto da Alessandro Piccarolo il 29-07-2010 ore 09:42
Intel Software
Uno degli aspetti importanti, cui bisogna prestare attenzione lavorando con differenti tipi di processori, è rappresentato dal tipo di endian adottato da quel particolare processore. L’endian di un processore specifica la modalità in cui vengono memorizzati e gestiti i singoli byte, nel caso di dati di tipo multibyte; essa può essere di due tipi:
  • big-endian: il byte più significativo viene memorizzato prima;
  • little-endian: il byte meno significativo viene memorizzato prima.
Ad esempio, il valore 54321 (ossia, 0xD431 in esadecimale) verrebbe memorizzato come D4-31 nel caso big-endian e come 31-D4 nel caso little-endian. Appare pertanto evidente come la gestione dell’endian sia cruciale da un duplice punto di vista: da un lato, per garantire la portabilità del proprio codice da un tipo di processore a un altro; dall’altro per evitare che dati multibyte salvati come big-endian vengano poi riletti come little endian (e viceversa), portando a errori nei valori dei dati.

Un recente articolo scritto da Carl Ek, software architect presso Code Integrity Solutions, presenta una dettagliata analisi dei problemi che possono emergere in seguito a un’errata (o semplicemente superficiale) gestione dell’endian, prendendo come riferimento il linguaggio C, date le ampie possibilità che offre per lavorare a livello di bit e byte.

L’autore offre dapprima un insieme di best practices da seguire, tutte derivate fondamentalmente da un’unica regola generale: evitare per quanto possibile di processare i byte basandosi su ipotesi sull’ordine in cui questi verranno memorizzati. Nel caso in cui un approccio del genere non fosse possibile, allora il programma deve gestire opportunamente entrambi i tipi di endian — secondo la cosiddetta strategia di Endian Protocol — utilizzando fondamentalmente uno dei vari metodi di swap dei dati.

Oltre alle best practices indicate dall’autore, è possibile definire vari altri tipi di regole (ad esempio quelle del MISRA (Motor Industry Software Reliability Association)), ma soprattutto utilizzare strumenti di analisi statica del codice, in particolare quelli per i quali è possibile personalizzare i criteri di analisi. L’uso congiunto di queste regole permette di adottare criteri semplici per risolvere errori di programmazione e di ottenere pertanto un codice di elevato livello qualitativo sin dagli inizi del suo sviluppo.
Precedente: Oracle rinnova il sito e il linguaggio Java
Successiva: Nuovi linguaggi di programmazione (1/2)
Copyright Programmazione.it™ 1999-2009. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.787 secondi. Sito ottimizzato per Mozilla Firefox. Powered by Kyron.