ARM è big endian o little endian?
Solo aggiungendo una chicca alle risposte già generalmente corrette. ARM originale era little-endian, e quasi tutti gli usi oggi lo sono, anche se il supporto per big-endian è stato aggiunto abbastanza presto. L'aspetto negativo, come alcuni hanno notato, è che il software e il supporto della toolchain per BE possono essere carenti. Il mio ricordo più vivido di questo è di quando mi fu chiesto di aiutare a diagnosticare un problema in cui era incappato un team che sviluppava per 3DO. Per qualsiasi ragione (attaccamento al 68000?) 3DO scelse di usare l'ARM in BE, che non sarebbe stato un killer, ma "suggerirono fortemente" (IIRC, non facevo parte del team che usava la piattaforma) di usare il compilatore C Norcroft. (Forse era l'unica opzione all'epoca)
Qui abbiamo bisogno di un po' più di background: ARM originale supportava accessi alla memoria in byte (8-bit) e in parola (32-bit). Se si usavano dati a 16 bit (che i videogiochi tendevano a usare molto, per ragioni di Goldilocks) era necessaria una sequenza di istruzioni multiple per farlo. Il problema era che il compilatore Norcroft C (per ARM, come fornito da 3DO) non gestiva correttamente i riferimenti a 16 bit tramite un puntatore. Cioè, dato
unsigned short a16[42];
unsigned short *p16;
allora il caricamento di a16[i] funzionava, ma il caricamento di p16[i] no (o forse "non sempre", che non è un miglioramento, davvero) Non ricordo se *p16 funzionava, ma sospetto che forse sì, dato che ciò avrebbe permesso l'hack di avere un puntatore extra:
unsigned short wp16 = p16+i
e usare *wp. Il che farebbe schifo _meno_, ma è stato troppo tempo fa per ricordarlo.
Non per mancare di rispetto a Norcroft, che IIRC ha scritto un front-end portatile, ma chiunque abbia hackerato il supporto BE nel back-end ARM apparentemente non era interessato ai test. Oppure, qualcuno ha fatto un cambiamento successivo che l'ha rotto, e di nuovo, non ha fatto molti test.
Il risultato è che allontanarsi troppo dal mainstream, anche se si presume che quel percorso esista, può portarvi in un mondo di dolore. Se rimani nel gregge, qualche altra gazzella può essere la cena.
Articoli simili
- Perché è necessaria una licenza di ARM per progettare una CPU ARM? Come sono protetti i set di istruzioni?
- Quali sono i Pokemon migliori da mettere in squadra per le battaglie della Little Cup in Pokemon Go?
- La serie di Hulu 'Little Fires Everywhere' è il miglior lavoro di Reese Witherspoon?
- Potete consigliarmi alcuni giochi per iOS che non richiedono una connessione internet? Attualmente ho TripleTown, Little Alchemy e Final Fantasy 4.