web-dev-qa-db-ja.com

arm64とaarch64の違い

私は2つの「ロック解除された」デバイス、iPad mini 3とGalaxy Edge 6を持っています。どちらも端末と​​Unixコマンドの最小限のセットを備えています。私は両方のデバイスがarm64プロセッサを持っていると思っていましたが、実行したとき

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の両方の場合の最後の情報はファームウェアを表し、最後から2番目の情報はarm64とaarch64を表します。

私の質問は次のとおりです。明らかに、文字列「arm64」と「aarch64」は同じではありませんが、私は常にarm64とaarch64は同じだと思っていました。 (ここで質問にarm64タグを付けたときにも通知されます。)

それで、彼らは本当に同一ですか?

特に、両方のターゲットのライブラリをクロスビルドする場合、何を心配する必要がありますか?実際、gcc 5.2.0を念頭に置いていますが、おそらくそれよりも低いバージョンもあります。合格してもいいですか

-target=arm64

または

-target=aarch64

私がターゲットとするデバイスに応じて、設定する残りのオプションを心配するだけですか?

EDITうーん、成功せずにこれをもう一度探してください。

ARM64はAppleによって作成され、AARCH64は他の人、特にGNU/GCCによって作成されたようです。

いくつかのグーグルの後、私はこのリンクを見つけました:

LLVM 64ビットARM64/AArch64バックエンドがマージされました

したがって、理にかなっているのは、AppleがLLVMを使用し、AndroidがGNU GCCツールチェーンを使用しているため、iPadはARM64と呼ばれ、EdgeはAARCH64を使用します。

42
pelotasplus

AArch64はArmv8-Aアーキテクチャで導入された64ビット状態です( https://en.wikipedia.org/wiki/ARM_architecture#ARMv8-A )。 Armv7-Aおよび以前の32ビットArmアーキテクチャと下位互換性のある32ビット状態は、AArch32と呼ばれます。したがって、64ビットGNUのISAトリプレットはaarch64です。 Linuxカーネルコミュニティは、カーネルのポートをaarch64ではなくこのアーキテクチャarm64に呼び出すことを選択したため、arm64の使用法の一部がここから来ています。

私が知る限り、aarch64のAppleバックエンドはarm64と呼ばれ、LLVMコミュニティが開発したバックエンドはaarch64と呼ばれ(64ビットISAの正規名であるため)、その後2つがマージされ、バックエンドは現在aarch64と呼ばれています。

したがって、aarch64とarm64は同じものを指します。

30
Kyrill