O ARM é grande ou pequeno?
Apenas adicionando um tidbit às respostas geralmente corretas já. O ARM original era little-endian, e quase todo uso hoje também é, embora o suporte ao big-endian tenha sido adicionado bastante cedo. O lado negativo, como alguns notaram, é que pode faltar o suporte de software e de cadeia de ferramentas para BE. Minha memória viva disto foi de quando me pediram para ajudar a diagnosticar um problema que uma equipe que estava desenvolvendo para o 3DO encontrou. Por qualquer razão (anexo ao 68000?) a 3DO escolheu usar o ARM na BE, que não seria um assassino, mas eles também "sugeriram fortemente" (IIRC, eu não era realmente parte da equipe usando a plataforma) usando o compilador Norcroft C. (Talvez tenha sido a única opção na altura)
Aqui precisamos de um pouco mais de background: ARM original suportado em byte (8-bit) e acesso de palavras (32-bit) à memória. Se você usou dados de 16 bits (que os jogos de vídeo tendem a usar um _lot_ de, por razões Goldilocks) você precisava de uma sequência multi-instrução para fazer isso. O problema era que o compilador Norcroft C (para o ARM, tal como é distribuído pela 3DO) não lidava correctamente com referências de 16 bits através de um ponteiro. ou seja, dado
unsigned short a16[42];
unsigned short *p16;
then loading a16[i] worked, but loading p16[i] did not (or maybe "not always", which is not an improvement, really) Eu não me lembro se *p16 funcionou, mas suspeito que talvez tenha funcionado, uma vez que isso permitiria o hack de ter um ponteiro extra:
p>p curto-circuito wp16 = p16+i
e usando *wp. O que seria uma porcaria _less_, mas foi há muito tempo atrás para lembrar.
Não dissimular Norcroft, que o IIRC escreveu um front-end portátil, mas quem quer que tenha invadido o suporte BE no backend do ARM aparentemente não estava em testes. Ou, alguém fez uma mudança posterior que o quebrou, e mais uma vez, não muito testando.
O take-away é que se afastar muito do mainstream, mesmo que esse caminho seja suposto existir, pode te colocar em um mundo de dor. Se você ficar com o rebanho, alguma outra gazela pode ser o jantar.
Artigos semelhantes
- Quão pequeno pode ser um código QR? Quão pequeno pode ser, por exemplo, em um cartão de visita?
- Porque é que você precisa de uma licença do ARM para projetar uma CPU ARM? Como são protegidos os conjuntos de instruções?
- O que você prefere, um telefone grande ou um telefone pequeno, e por quê?
- Se você usa um PC, prefere um ecrã grande ou um ecrã pequeno, e porquê?