Różnice między arm64 i aarch64

86

Mam dwa „odblokowane” urządzenia, iPad mini 3 i Galaxy Edge 6, oba wyposażone w terminal i minimalistyczny zestaw poleceń unixowych. Myślałem, że oba urządzenia mają procesory arm64, ale kiedy uruchomiłem

na obu urządzeniach otrzymałem następujące informacje:

dla iPada mini 3:

dla Samsung Galaxy s6 Edge:

Jeśli się nie mylę, ostatnia informacja w obu przypadkach, J85mAP i GNU / Linux, oznacza oprogramowanie sprzętowe, a informacje poprzedzające, arm64 i aarch64, oznaczają procesory.

Moje pytania są następujące: oczywiście struny „arm64” i „aarch64” to nie to samo, ale zawsze myślałem, że arm64 i aarch64 są takie same. (Jest to nawet powiedziane, gdy umieścisz tutaj tag arm64 w pytaniu).

Więc czy naprawdę są identyczne?

W szczególności, czym powinienem się martwić w przypadku bibliotek między budynkami dla obu celów? Właściwie mam na myśli gcc 5.2.0, ale może też niższe wersje. Mogę po prostu przejść

lub

według którego urządzenia kieruję i martwię się tylko o pozostałe opcje do skonfigurowania?

EDYTUJ Hum, poszukaj tego ponownie, bez powodzenia.

Olorin
źródło

Odpowiedzi:

68

AArch64 to stan 64-bitowy wprowadzony w architekturze Armv8-A ( https://en.wikipedia.org/wiki/ARM_architecture#ARMv8-A ). Stan 32-bitowy, który jest wstecznie kompatybilny z architekturą Armv7-A i wcześniejszą architekturą 32-bitową Arm, jest określany jako AArch32. Dlatego trojaczką GNU dla 64-bitowego ISA jest aarch64. Społeczność jądra Linuksa zdecydowała się wywołać swój port jądra na tę architekturę arm64 zamiast aarch64, więc stąd pochodzi część użycia arm64.

O ile wiem, zaplecze Apple dla aarch64 nazywał się arm64, podczas gdy zaplecze stworzone przez społeczność LLVM nazywało się aarch64 (ponieważ jest to kanoniczna nazwa 64-bitowego ISA), a później oba zostały połączone, a zaplecze nazywa się teraz aarch64 .

A więc AArch64 i ARM64 odnoszą się do tego samego.

Kyrill
źródło
57

Wygląda na to, że ARM64 został stworzony przez Apple, a AARCH64 przez innych, w szczególności facetów z GNU / GCC.

Po pewnym googlowaniu znalazłem ten link:

Połączyły się 64-bitowe zaplecze LLVM ARM64 / AArch64

Więc ma sens, iPad nazywa się ARM64, ponieważ Apple używa LLVM, a Edge używa AARCH64, ponieważ Android używa łańcucha narzędzi GNU GCC.

pelotasplus
źródło
Dzięki za tę odpowiedź. Tak więc, przynajmniej w teorii, w przypadku cross-kompilacji gcc z mac os lub ubuntu na ipad lub edge, nie powinienem się martwić o opcję -target przekazaną do skryptu konfiguracyjnego, pod warunkiem, że jest to jedna z arm64 i aarch64?
Olorin
6
Chociaż nie mam nic nowego do dodania do powyższych informacji, chciałbym podkreślić slajd 10 z events.linuxfoundation.org/images/stories/pdf/ ... - Podkreśla, jak jądro Linuksa odnosi się do AARCH64 pod nazewnictwem ARM64. Tak więc, podczas krzyżowego budowania plików binarnych, które wymagają obsługi nagłówków jądra Linuksa, prawdopodobnie ARCH = arm64 byłby tym właściwym - nawet jeśli celem jest "aarch64".
Shrey,
3
Twoja odpowiedź jest prawidłowa. Zobowiązać się do brzękiem za to ARM64 / AArch64 seryjnej jest dość prosta. arm64 i aarch64 wydają się być synonimami w większości zastosowań.
Gabriel Parent,