2016-05-15 13 views
1

Laut Microsoft (here und here) wird das Unternehmen ARMv8/Aarch64 (ARM-64) in der kommenden Version von Windows 10 unterstützen. Darüber hinaus hat Microsoft already supplied previews, also bin ich rate Tool-Unterstützung ist vorhanden.ARM-64 im Präprozessor erkennen?

Für diejenigen, die nicht bewusst, die images provided with the article zeigt deutlich eine Qualcomm Snapdragon 410. Das ist ein A-53-Kern, und seine Aarch64/ARM-64.

Microsoft definiert _M_ARM für ARM-32, und wir nutzen es zur Zeit NEON Verfügbarkeit zu erkennen. ARMv8 unterstützt die optionalen Erweiterungen CRC32, AES, SHA-1 und SHA-2. Wir haben Code für sie bereits für Apple und Linux geschrieben, und wir möchten es für Microsoft-Plattformen aktivieren.

Microsoft hat auch __M_ARM_FP, aber es ist nicht klar, es zu benutzen ARM64 zu erkennen. Ich bin auch nicht klar, über die Relevanz der x86:

erweitert sich auf einen Ganzzahlliteral Wert, der angibt, welche/arch Compiler Option verwendet:

  • Im Bereich von 30 bis 39, wenn kein/arch ARM-Option wurde angegeben, die angibt, dass die Standardarchitektur für ARM verwendet wurde (VFPv3).
  • Im Bereich 40-49 if/arch: VFPv4 wurde verwendet.
  • Siehe/arch (x86) für weitere Informationen.

lief ich ein paar schnelle Tests auf den Microsoft-Compiler ich zur Verfügung haben (alle von ihnen VC aus dem Jahr ++ 5.0). Sie konnten ARMv8-Intrinsics nicht verbrauchen, was nicht überraschend ist. Ich schätze, ich brauche ein MSDN-Abonnement, um mit den neuesten Tools zu testen, aber ich habe das Abonnement nicht mehr.

Meine Fragen sind:

  • Wie wir ARMv8/Aarch64 im Preprocessor (_M_ARM64?)
  • Welche Version des Compilers (_MSC_VER) unterstützen ARMv8 Anweisungen

erkennen

Dies kann zusammenzuhängen: What is WINAPI_FAMILY_ONECORE_APP?

+0

Intrinsics sind ein Compilerimplementierungsdetail, nichts mit dem SDK zu tun. Mit solchen alten Compilern können Sie nirgends hinkommen, VS-Version 15 (nicht VS2015) ist gerade in der Vorschau. Erwarten Sie Probleme mit Alpha-Versionen, melden Sie Fehler und fehlende Features an connect.microsoft.com anstelle von SO. Oder warte einfach, bis es fertig ist. –

+1

@HansPassant - Ich bin mir nicht sicher, worüber Sie in Bezug auf das Melden von Bugs sprechen ??? Es ist eine einfache Frage: Microsoft unterstützt ARM64, also wie erkennen wir es? Es ist eine perfekte Frage für Stack Overflow. – jww

+0

ARM64 wird in keinem dieser Links erwähnt, beide sagen "ARM" und maximal 4GB RAM (für mobile Geräte) ohne ARM-Unterstützung für "industrielle" IoT-Editionen. –

Antwort

3

Antworten, in umgekehrter Reihenfolge:

  • Keine der aktuell freigegebenen Visual Studio-Versionen unterstützen ARMv8/AArch64, sie nur ARMv7 unterstützen. Obwohl Windows 10 selbst Anzeichen von arm64-Unterstützung zeigt (es gibt einige ausführbare Dateien und Bibliotheken für arm64), enthält keine der Versionen des Compilers, die bisher veröffentlicht wurden, es tatsächlich, meines Wissens. (Visual Studio 2015 Community enthält es zumindest nicht, und auch nicht das neue Visual Studio "15" Preview 2, das vor ein paar Tagen veröffentlicht wurde.) Es ist also eindeutig intern vorhanden, aber es wurde nicht von jedem gemacht öffentliche Veröffentlichung noch.

  • Was für was zu suchen suchen; dies ist derzeit nicht bekannt, da es für die arm64-target-Version des Compilers keine öffentliche Dokumentation gibt, da diese noch nicht veröffentlicht wurde und auch empirisch nicht getestet werden kann.

Ich sehe keine klare Aussage von Microsoft entweder in Ihren Links sagen, dass es unterstützt wird, aber zumindest der Windows-10 SDK klare Zeichen besagt davon an denen gearbeitet wird.


Edit:

Auch wenn der Compiler nicht verfügbar ist, die Microsoft Windows 10 SDK-Header und Visual C++ 2015-Header auch (die keine Übereinstimmungen ARM64 Libs haben) (die selbst Libs für ARM64 enthält) enthält Hinweise dazu. Ähnlich wie _M_ARM gibt es auch _M_ARM64. Ein Ausschnitt aus vc/include/intrin.h:

#if defined (_M_ARM) 
    #include <armintr.h> 
    #include <arm_neon.h> 
#endif 

#if defined (_M_ARM64) 
    #include <arm64intr.h> 
    #include <arm64_neon.h> 
#endif 

Edit2:

Während keine öffentliche Version der Visual C++ Compiler Targeting arm64 verfügbar ist noch, Klirren ist für Windows/arm64 die ersten Teile von Unterstützung erhalten, und sie verwenden auch _M_ARM64:

https://github.com/llvm-project/clang/commit/5b7d7d2b2d0bd7054f51b9d108cdd5299a0ec33e#diff-ed544af3ae6807a8513b1cabb3233941R6576


Edit3:

Mit dem neuesten Update von Visual Studio 2017, Version 15.4, wird der ARM64-Compiler veröffentlicht. Im Installationsprogramm kann das Element "Visual C++ Compiler und Bibliotheken für ARM64" manuell überprüft werden (es ist nicht standardmäßig aktiviert).

Danach tun, können Sie "Entwickler-Eingabeaufforderung für VS 2017" starten, und in dieser Shell run "vsdevcmd -arch = arm64 -host_arch = amd64", dann haben Sie den Compiler auf dem Weg bekommen:

********************************************************************** 
** Visual Studio 2017 Developer Command Prompt v15.4.0 
** Copyright (c) 2017 Microsoft Corporation 
********************************************************************** 

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>vsdevcmd -arch=arm64 -host_arch=amd64 
********************************************************************** 
** Visual Studio 2017 Developer Command Prompt v15.4.0 
** Copyright (c) 2017 Microsoft Corporation 
********************************************************************** 

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>cl 
Microsoft (R) C/C++ Optimizing Compiler Version 19.11.25547 for ARM64 
Copyright (C) Microsoft Corporation. All rights reserved. 

usage: cl [ option... ] filename... [ /link linkoption... ] 

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community> 

Und dieser Compiler vordefiniert _M_ARM64, die Sie identifizieren können, um diese Frage zu beantworten.

+0

Danke @mstorsjo. Haben Sie ein MSDN-Abonnement? Jemand damit hat Zugriff auf die neuesten Tools, und sie werden wahrscheinlich die Antwort wissen. Ich habe kein MSDN-Abonnement mehr, also muss ich nach Stack Overflow fragen und auf Leute warten, die Zugriff haben. – jww

+0

Nein, ich habe kein MSDN-Abonnement, daher kann ich das nicht überprüfen, aber ich habe https://www.visualstudio.com/en-us/downloads/visual-studio-next-downloads-vs.aspx getestet die vor weniger als einer Woche veröffentlicht wurde, afaik. – mstorsjo

+1

Es gibt eine offizielle Anfrage an Microsoft [ARM64-Unterstützung für Visual Studio hinzufügen] (https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/13362909-add-support-for-arm64), dass Sie upvote, wenn Sie möchten. – Akeo