/arch (x86)
Určuje architekturu pro generování kódu na x 86.See also /arch (x64) and /arch (ARM).
/arch:[IA32|SSE|SSE2|AVX]
Arguments
/arch:IA32
Určuje žádné rozšířené pokyny a také určuje x 87 pro plovoucí bod výpočtů./arch:SSE
Umožňuje použití instrukce SSE./arch:SSE2
Umožňuje použití instrukcí SSE2.Toto je výchozí instrukce na x 86 platformách, pokud ne /arch je zadán parametr./arch:AVX
Umožňuje použití Intel Advanced Vector Extensions pokyny.
Poznámky
Instrukce SSE a SSE2 existují na různých procesorech Intel a AMD.Instrukce AVX existovat na procesory Intel Sandy Bridge a procesory AMD Bulldozer.
_M_IX86_FP Označuje makro, které, pokud existuje, /arch byla použita možnost kompilátoru.Další informace naleznete v tématu Předdefinovaná makra.
Optimalizátor zvolí, kdy a jak používat instrukce SSE a SSE2 při /arch je určena.Používá SSE a SSE2 pokyny pro některé skalární výpočty s plovoucí desetinnou čárkou v případě, že zjistí, že je rychlejší použít místo s plovoucí desetinnou čárkou x 87 instrukce SSE/SSE2 a registry zaregistrovat zásobníku.V důsledku toho váš kód skutečně použije směs x 87 a SSE/SSE2 pro výpočty s plovoucí desetinnou čárkou.Navíc s /arch:SSE2, SSE2 pokyny lze použít pro některé operace 64bitové celé číslo.
Kromě použití instrukce SSE a SSE2, kompilátor používá také jiné pokyny, které jsou k dispozici na revize procesoru, které podporují SSE a SSE2.Příkladem je prvním zobrazení na revizi procesory Intel Pentium Pro instrukce CMOV.
Při použití /CLR kompilace, /arch nemá žádný vliv na generování kódu pro spravované funkce./archovlivní pouze generování kódu pro nativní funkce.
/archa /QIfist nelze použít u stejného souboru pro kompilaci.Zejména, pokud nepoužíváte _controlfp Chcete-li upravit slovo FP ovládací prvek a potom spuštění po spuštění sady x 87 FPU ovládací prvek slovo přesné ovládání pole Kód 53 bitů.Proto každý float a double operace ve výrazu používá 53 bitů mantisy a exponentu 15 bitů.Však každá operace s jednoduchou přesností SSE používá 24 bitů mantisy a exponentu 8 bitů a operace s dvojitou přesností SSE2 53 bitů mantisy a 11 bitů exponentu.Další informace naleznete v tématu _control87, _controlfp, __control87_2.Tyto rozdíly jsou možné v jednom výrazu stromu, ale není v případech, kde se jedná o přiřazení uživatelských po každém podvýraz.Berte v úvahu následující skutečnosti:
r = f1 * f2 + d; // Different results are possible on SSE/SSE2.
Proti:
t = f1 * f2; // Do f1 * f2, round to the type of t.
r = t + d; // This should produce the same overall result
// whether x87 stack is used or SSE/SSE2 is used.
controlfpnedojde ke změně bitů pro ovládací prvek MXCSR.Proto se /arch:SSE2, všechny funkce, které závisí na využívání controlfp se přeruší.
Chcete-li nastavit tuto možnost kompilátoru pro SSE a SSE2 v aplikaci Visual Studio
Otevřít Stránky vlastností dialogové okno pro projekt.Další informace naleznete v tématu Jak: otevření stránky vlastností projektu.
Vyberte C/C++ složky.
Vyberte Generování kódu stránku vlastností.
Změnit Povolit rozšířené instrukce nastavit vlastnost.
Chcete-li nastavit možnosti kompilátoru /arch:AVX v aplikaci Visual Studio
Otevřít Stránky vlastností dialogové okno pro projekt.Další informace naleznete v tématu Jak: otevření stránky vlastností projektu.
Vyberte C/C++ složky.
Vyberte příkazového řádku stránku vlastností.
V Další možnosti pole, přidejte /arch:AVX.
Chcete-li tuto možnost kompilátoru nastavit programově
- Viz téma EnableEnhancedInstructionSet.