/arch (x86)
Określa architektura do generowania kodu w architekturze x 86.See also /arch (x64) and /arch (ARM).
/arch:[IA32|SSE|SSE2|AVX]
Argumenty
/arch:IA32
Określa ma rozszerzone instrukcji oraz określa 87 x obliczania ruchomy punkt./arch:SSE
Umożliwia korzystanie z instrukcji SSE./arch:SSE2
Umożliwia korzystanie z instrukcji SSE2.Jeśli nie jest to instrukcja domyślny na platformach x 86 /arch opcji./arch:AVX
Umożliwia korzystanie z instrukcji Intel Advanced wektor rozszerzenia.
Uwagi
Instrukcje SSE i SSE2 istnieje na różnych procesorach Intel i AMD.Instrukcje AVX istnieje na procesory firmy Intel Sandy Bridge i procesory AMD Bulldozer.
_M_IX86_FP Wskazuje makro, które, jeśli w ogóle, /arch została użyta opcja kompilatora.Aby uzyskać więcej informacji, zobacz Wstępnie zdefiniowane makra.
Optymalizator wybiera, kiedy i jak skorzystać z instrukcji SSE i SSE2 po /arch jest określony.Wykorzystuje on SSE i instrukcji SSE2 do niektórych skalarnych obliczeń zmiennoprzecinkowych, gdy ustali, że to szybsze można użyć instrukcji SSE/SSE2 i rejestry zamiast liczb zmiennoprzecinkowych 87 x zarejestrować stosu.Mieszaniny x 87 i SSE/SSE2 faktycznie są dzięki temu używać w kodzie do obliczeń zmiennoprzecinkowych.Ponadto, z /arch:SSE2, instrukcji SSE2 może służyć do niektórych operacji 64-bitowa liczba całkowita.
Tylko za pomocą instrukcji SSE i SSE2, kompilator używa także inne instrukcje, które znajdują się na poprawki procesora, które obsługują SSE i SSE2.Przykładem jest instrukcja CMOV, który pojawił się na zmiany procesory Intel Pentium Pro.
Podczas korzystania z /CLR do skompilowania, /arch nie ma wpływu na generowanie kodu dla zarządzanej funkcji./archdotyczy tylko generowanie kodu dla macierzystych funkcji.
/archi /QIfist nie można używać na tym samym compiland.W szczególności, jeśli nie skorzystasz z _controlfp do modyfikowania słowa kontrolnego FP, a następnie startowa zestawy x 87 FPU kontroli word precyzja sterowania pola Kod do 53-bitów.W związku z tym co pływak i podwójne operacji w wyrażeniu używa mantysy 53-bitowe i wykładnik 15 bitów.Jednak każda operacja Pojedyncza precyzja SSE używa mantysy 24-bitowy i wykładniku 8-bitowy i SSE2 podwójnej precyzji używają mantysy 53-bitowe i wykładniku-11-bitowe.Aby uzyskać więcej informacji, zobacz _control87, _controlfp, __control87_2.Różnice te są możliwe w drzewie jedno wyrażenie, ale nie w przypadku gdy przypisywanie użytkownika jest po każdym wyrażenia cząstkowego.Należy rozważyć następujące kwestie:
r = f1 * f2 + d; // Different results are possible on SSE/SSE2.
Przed:
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.
controlfpnie powoduje zmiany bitów sterowania MXCSR.W związku z tym, z /arch:SSE2, wszystkie funkcje, które zależy od stosowania controlfp zostaną przerwane.
Aby ustawić tę opcję kompilatora dla SSE lub SSE2 w programie Visual Studio
Otwórz Stron właściwości okno dialogowe dla projektu.Aby uzyskać więcej informacji, zobacz Jak: Otwórz strony właściwości projektu.
Wybierz C/C++ folder.
Wybierz Generowanie kodu strona właściwości.
Modyfikowanie Zestawem instrukcji włączyć ulepszone właściwość.
Aby ustawić opcję kompilatora /arch:AVX w programie Visual Studio
Otwórz Stron właściwości okno dialogowe dla projektu.Aby uzyskać więcej informacji, zobacz Jak: Otwórz strony właściwości projektu.
Wybierz C/C++ folder.
Wybierz wiersza polecenia strona właściwości.
W dodatkowe opcje pole, dodać /arch:AVX.
Aby ustawić tę opcję kompilatora programowo
- Zobacz EnableEnhancedInstructionSet.