Diferencias entre arm64 y aarch64

86

Tengo dos dispositivos "desbloqueados", un iPad mini 3 y un Galaxy Edge 6, ambos dotados de un terminal y un conjunto minimalista de comandos Unix. Pensé que ambos dispositivos tenían procesadores arm64 pero cuando ejecuté

en ambos dispositivos obtuve lo siguiente:

para el iPad mini 3:

para el Samsung Galaxy s6 Edge:

Si no me equivoco, la última información en ambos casos, J85mAP y GNU / Linux, representan firmwares, y la antepenúltima información, arm64 y aarch64, representan los procesadores.

Mis preguntas son las siguientes: obviamente las cadenas "arm64" y "aarch64" no son iguales, pero siempre pensé que arm64 y aarch64 eran iguales. (Incluso se dice cuando pones la etiqueta arm64 en una pregunta aquí).

Entonces, ¿son realmente idénticos?

Especialmente, ¿de qué debería preocuparme en el caso de bibliotecas de construcción cruzada para ambos destinos? De hecho, tengo en mente gcc 5.2.0, pero quizás también versiones inferiores. Puedo pasar

o

según el dispositivo al que me dirijo y solo me preocupo por el resto de opciones para configurar?

EDITAR Hum, busca esto de nuevo, sin éxito.

Olorin
fuente

Respuestas:

67

AArch64 es el estado de 64 bits introducido en la arquitectura Armv8-A ( https://en.wikipedia.org/wiki/ARM_architecture#ARMv8-A ). El estado de 32 bits que es compatible con versiones anteriores de Armv7-A y arquitecturas anteriores de Arm de 32 bits se denomina AArch32. Por lo tanto, el triplete de GNU para ISA de 64 bits es aarch64. La comunidad del kernel de Linux eligió llamar a su puerto del kernel a esta arquitectura arm64 en lugar de aarch64, así que de ahí proviene parte del uso de arm64.

Hasta donde yo sé, el backend de Apple para aarch64 se llamaba arm64 mientras que el backend desarrollado por la comunidad de LLVM se llamaba aarch64 (ya que es el nombre canónico para el ISA de 64 bits) y luego los dos se fusionaron y el backend ahora se llama aarch64 .

Entonces AArch64 y ARM64 se refieren a lo mismo.

Kyrill
fuente
57

Parece que ARM64 fue creado por Apple y AARCH64 por los demás, sobre todo los chicos de GNU / GCC.

Después de buscar en Google encontré este enlace:

Los back-end LLVM de 64 bits ARM64 / AArch64 se han fusionado

Así que tiene sentido, iPad se llama a sí mismo ARM64, ya que Apple está usando LLVM, y Edge usa AARCH64, ya que Android usa la cadena de herramientas GNU GCC.

pelotasplus
fuente
Gracias por esta respuesta. Entonces, al menos en teoría, para la compilación cruzada de gcc desde mac os o ubuntu a ipad o edge, realmente no debería preocuparme por la opción -target pasada al script de configuración, siempre que sea una entre arm64 y aarch64.
Olorin
6
Aunque no tengo nada nuevo que agregar a la información anterior, me gustaría resaltar la diapositiva 10 de events.linuxfoundation.org/images/stories/pdf/… - Destaca cómo el Kernel de Linux se refiere a AARCH64 bajo la denominación ARM64. Entonces, mientras que la construcción cruzada de binarios requiere soporte para encabezados del kernel de Linux, probablemente ARCH = arm64 sería el correcto, aunque el objetivo sea "aarch64".
Shrey
3
Tu respuesta es correcta. El compromiso de clang para esa fusión ARM64 / AArch64 es bastante sencillo. arm64 y aarch64 aparecen como sinónimos para la mayoría de los propósitos.
Gabriel Parent