Attualmente sto lavorando su una base di codice C / C ++ che è abbastanza portabile, può compilare sulla maggior parte dei sistemi Unix come MS-Windows (MSVC), usando vari compilatori popolari.
In precedenza ho trovato test su diversi sistemi operativi e architetture che possono aiutare a trovare bug oscuri o ipotesi errate.
Mi preoccupo per il dominio di x86 / amd64 che il nostro code-base potrebbe diventare inconsapevolmente meno portabile.
Oltre a testare su un sistema big-endian (per trovare errori ovvi con big / little endian), ci sono alcune architetture che hanno caratteristiche che le rendono migliori per la portabilità del software di stress testing?
Esempi di possibili differenze.
- different endian.
- comportamento diverso durante il threading.
- comportamento della memoria dello stack.
- dimensione dei tipi primitivi (char, short, int, long, float ... ecc.)
- allineamento / riempimento di strutture (che potrebbe nascondere errori).
- differenza di ottimizzazioni apportate dal compilatore.
Esistono architetture che presentano differenze più significative rispetto a x86 / amd64, rendendole migliori candidate per l'esposizione dei problemi di portabilità del codice? (e hanno compilatori e librerie C / C ++ - libc, libstdc ++).
Chiedere perché è un investimento di tempo considerevole per impostare un nuovo sistema, anche se emulato.
nel caso non sia chiaro cosa intendo per architetture di processori, ad esempio (x86, amd64, ia64, mips, risc, arm, m68k, ppc, itanium)
Nota, non sto proponendo questo come un modo principale per scoprire bug, eseguiamo più strumenti di analisi statica e test, ma in passato abbiamo rilevato errori nel codice a causa delle differenze nelle piattaforme meno comuni (SGI , SPARC, Solaris, BSD ecc. Tuttavia alcuni di questi sistemi stanno svanendo)