source

암64와 아치64의 차이점

nicesource 2023. 6. 28. 21:48
반응형

암64와 아치64의 차이점

저는 두 개의 "잠금 해제" 장치, 즉 iPad mini 3와 Galaxy Edge 6를 가지고 있는데, 둘 다 터미널과 미니멀리즘적인 유닉스 명령 집합을 갖추고 있습니다.두 장치 모두 암64 프로세서가 있는 줄 알았는데 실행해보니

uname -a

두 장치 모두에서 다음과 같은 결과를 얻었습니다.

iPad mini 3의 경우:

xxxxs-iPad:/var/mobile root# uname -a
Darwin xxxx-iPad 14.0.0 Darwin Kernel Version 14.0.0: Wed Jun 24 00:50:15 PDT 2015; root:xnu-2784.30.7-30/RELEASE_ARM64_S5L8960X iPad4, **arm64**, J85mAP

Samsung Galaxy s6 Edge의 경우:

u0_a203@zerolte:/ $ uname -a
Linux localhost 3.10.61-4497415 #1 SMP PREEMPT Thu Apr 9 15:06:40 KST 2015 **aarch64** GNU/Linux

내가 틀리지 않았다면, 두 경우의 마지막 정보인 J85mAP와 GNU/Linux는 펌웨어를 나타내며, 이전의 마지막 정보인 arm64와 arch64는 프로세서를 나타냅니다.

제 질문은 다음과 같습니다: 분명히 "arm64"와 "arch64"라는 문자열이 같지 않지만, 저는 항상 arm64와 arch64가 같다고 생각했습니다.(여기서 arm64 태그를 질문에 추가하면 알 수 있습니다.)

그렇다면, 그들은 정말 똑같을까요?

특히 두 대상 모두 도서관을 교차 구축하는 경우에는 무엇을 걱정해야 합니까?사실, 저는 gcc 5.2.0을 염두에 두고 있지만, 더 낮은 버전도 있을 수 있습니다.그냥 지나가도 될까요?

-target=arm64

또는

-target=aarch64

어떤 장치를 대상으로 하고 구성할 나머지 옵션에 대해 걱정해야 합니까?

Edit Hum, 이것을 다시 찾아보세요, 성공하지 못했습니다.

"AArch64"와 "ARM64"는 동일한 것을 의미합니다.

AArch64는 Armv8-A 아키텍처에 도입된 64비트 상태입니다.Armv7-A 및 이전의 32비트 Arm 아키텍처와 역호환되는 32비트 상태를 AArch32라고 합니다.따라서 64비트 ISA의 GNU 트리플렛은 arch64입니다.리눅스 커널 커뮤니티는 커널 포트를 arch64가 아닌 이 아키텍처 arm64로 부르기로 선택했습니다. 그래서 arm64 사용의 일부가 여기서 비롯되었습니다.

AArch64용으로 애플이 개발한 백엔드는 "ARM64"라고 불렸고 LLVM 커뮤니티가 개발한 백엔드는 "라고 불렸습니다.AArch64"(64비트 ISA의 표준 이름).이 둘은 2014년에 통합되었으며 현재 백엔드는 "라고 불립니다.AArch64".

ARM64는 애플과 AARCH64가 만든 것으로 보이며, 특히 GNU/GCC 사용자들이 그렇습니다.

몇 번 검색한 후 다음 링크를 찾았습니다.

LLVM 64비트 ARM64/AArch64 백엔드가 병합되었습니다.

따라서 Apple이 LLVM을 사용하고 있고, Android가 GNU GCC 툴체인을 사용하고 있는 것처럼, iPad는 스스로 ARM64라고 부릅니다.

"AArch64"는 "암 아키텍처 64비트"를 의미하는 공식 이름입니다.

"arm64"는 공식 이름이 형편없기 때문에 사람들이 비공식적으로 사용하는 이름입니다.

원래 "ARM"이라고 불리는 32비트 아키텍처가 있었습니다.그리고 2011년 10월에 ARMv8-A 사양은 "라고 불리는 새로운 64비트 실행 상태를 추가했습니다.AArch64"는 이전의 32비트 아키텍처로 소급하여 이름을 변경합니다.AArch32".그리고 조금 더 혼란을 가중시키기 위해, 2017년에 회사는 "ARM"("Advanced RISC Machines"의 약자)으로 불렸던 브랜드를 "Arm"으로 변경했습니다.

AArch64에 대한 지원은 2012년에 리눅스에 추가되었습니다.패치 세트는 처음에는 "arch64"로 불렸으나 "arm64"로 이름이 바뀌었습니다.LLVM 커뮤니티와 Apple은 2012년에 Clang에서 이를 지원하기 위해 병행 작업을 시작했으며 LLVM 커뮤니티는 "arch64"라고 불렀고 Apple은 "arm64"라고 불렀습니다.Apple은 이들의 변경 사항을 오픈 소스로 제공했으며 두 노력은 LLVM에서 서로 다른 이름으로 함께 살다가 2014년에 결국 통합되었기 때문에 LLVM/clang은 현재 이를 "arch64"라고 부릅니다.

그들이 같지 않다는 실수를 하기 쉽습니다.GNU 툴체인(arch64)으로 개발된 Maxim Integrated의 라이브러리가 있습니다.arm64용 XCode 개발 환경에서는 완전히 사용할 수 없습니다.MacBook Pro는 모델 A1278입니다. XCode는 버전 12.4. macOS Catalina v10.15.7입니다.Mac에서 ld 명령을 실행하면 알 수 없는 지원되지 않는 파일 형식으로 연결하려고 시도하고 있음을 나타냅니다.추가 조사 결과, 제가 믿는 ar 명령으로 생성된 Maxim 라이브러리는 ranlib을 실행하여 수정해야 합니다.처음에 저는 이것이 arch64 대 arm64의 문제라고 생각했습니다; 제가 틀렸습니다.

GCC는 그들이 다르다고 생각합니다.

https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html

https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html

LLVM은 이들이 동일하다고 생각합니다.

https://www.phoronix.com/scan.php?page=news_item&px=MTY5ODk

리눅스는 그들이 동일하다고 생각합니다.

find ./* -name aarch64
./tools/testing/selftests/kvm/lib/aarch64
./tools/testing/selftests/kvm/include/aarch64
./tools/testing/selftests/kvm/aarch64

find ./* -name arm64
./arch/arm64    
./Documentation/arm64
./Documentation/translations/zh_CN/arm64
./drivers/acpi/arm64
./include/config/crypto/ghash/arm64
./include/config/crypto/crct10dif/arm64
./include/config/crypto/aes/arm64
./include/config/crypto/sha1/arm64
./include/config/crypto/sha2/arm64
./include/config/crypto/sm3/arm64
./include/config/crypto/sha512/arm64
./include/config/arm64
./include/config/exynos/arm64
./scripts/dtc/include-prefixes/arm64
./tools/testing/selftests/arm64
./tools/arch/arm64
./tools/perf/arch/arm64
./tools/perf/pmu-events/arch/arm64

언급URL : https://stackoverflow.com/questions/31851611/differences-between-arm64-and-aarch64

반응형