MSVC



  • Hallo liebes Forum

    Angenommen ich habe ein Gerät mit einem Intel-Prozessor, mit einem AMD-Prozessor und einem ARM-Prozessor. Wenn ich nun in VS ein Programm schreiben will, generiert dann der MSVC automatisch den Maschinencode für die richtige Plattform, oder wie ist das? z.B. sehe ich nirgendwo eine Einstullung für "compile for amd-prozessor".

    Danke im Voraus 🙂



  • MSVC schrieb:

    Angenommen ich habe ein Gerät mit einem Intel-Prozessor, mit einem AMD-Prozessor und einem ARM-Prozessor. Wenn ich nun in VS ein Programm schreiben will, generiert dann der MSVC automatisch den Maschinencode für die richtige Plattform, oder wie ist das?

    Welche Sprache?

    C++ muss in echten Maschinencode compiliert werden, wird aber in der Regel für eine Plattform, nicht einen speziellen Prozessor angepasst, damit dieser auch auf möglichst vielen Geräten der gleichen Plattform läuft (z.B. für die x86er Plattform ODER die ARM-Plattform). Hier stellt man in der Regel wenn nur die minimal nötigen Befehlssätze (z.B. ab Pentium) ein.

    C# wird in einen Zwischencode erzeugt, der zwar an Assembler erinnert, aber noch plattformunabhängig ist. Erst beim Start wird der Code dann für die konkrete Plattform. Hier sind auch Optimierungen auf den konkreten Prozessor möglich, aber die Just-in-Time Compilierung kostet dafür zusätzliche Zeit - Um so häufiger ein bereits ausgeführter Codeteil aufgerufen wird, um so weniger fällt die Compilierzeit ins Gewicht (Wer Java- oder C#-Programme kennt, bemerkt das der Start oder der Aufruf einer speziellen Funktion beim ersten mal recht langsam sein kann, wiederholtes aufrufen wiederum ist schnell).



  • asc schrieb:

    Welche Sprache?

    Hallo asc,
    ich habe eine C++ dll die ich in einem C#-Programm verwenden will. Das Programm soll dann auf einem normalen PC und einem Embedded-Gerät mit ARM-Prozessor laufen.



  • MSVC schrieb:

    asc schrieb:

    Welche Sprache?

    Hallo asc,
    ich habe eine C++ dll die ich in einem C#-Programm verwenden will. Das Programm soll dann auf einem normalen PC und einem Embedded-Gerät mit ARM-Prozessor laufen.

    Wenn es sich um eine "echte" C++ DLL handelt wird dies nur klappen, wenn du dies speziell für beide Plattformen compilierst. Wenn du Embedded nennst, gehe ich davon aus das dir folgendes weiterhelfen könnte Compilers for Smart Device Projects. Für die Windows 8 Plattform sieht es dann nochmals anders aus.



  • asc schrieb:

    C++ muss in echten Maschinencode compiliert werden, wird aber in der Regel für eine Plattform, nicht einen speziellen Prozessor angepasst, damit dieser auch auf möglichst vielen Geräten der gleichen Plattform läuft (z.B. für die x86er Plattform ODER die ARM-Plattform). Hier stellt man in der Regel wenn nur die minimal nötigen Befehlssätze (z.B. ab Pentium) ein.

    Also verstehe ich dich richtig? Ich muss meine dll 2x kompilieren. Einmal für die X86-Welt und einmal für die ARM-Welt. Der Inhalt der dlls ist dann natürlich jeweils unterschiedlich, richtig?



  • Ja, möglicherweise sogar 3x, einmal für x86, einmal für x64 und einmal für ARM...



  • Perfekt, danke euch beiden für die Antworten. Und danke für den Link. 🙂


Anmelden zum Antworten