Udostępnij za pośrednictwem


/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

  1. 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.

  2. Wybierz C/C++ folder.

  3. Wybierz Generowanie kodu strona właściwości.

  4. Modyfikowanie Zestawem instrukcji włączyć ulepszone właściwość.

Aby ustawić opcję kompilatora /arch:AVX w programie Visual Studio

  1. 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.

  2. Wybierz C/C++ folder.

  3. Wybierz wiersza polecenia strona właściwości.

  4. W dodatkowe opcje pole, dodać /arch:AVX.

Aby ustawić tę opcję kompilatora programowo

Zobacz też

Informacje

/arch (minimalna architektura procesora)

Opcje kompilatora

Ustawianie opcji kompilatora