Objawy
Użyj opcji kompilatora/OT (korzyść szybko kod) podczas tworzenia aplikacji, która jest skonfigurowana na x64 platformy w Microsoft Visual Studio 2005 z dodatkiem Service Pack 1 (SP1). Po uruchomieniu aplikacji, niektóre instrukcji Jeżeli mogą działać niepoprawnie. W związku z tym wyniki są nieprzewidywalne. Na przykład Jeśli instrukcje mogą zostać pominięte w wygenerowanym kodzie aplikacji.
Ten problem występuje tylko w następującym scenariuszu.
-
Istnieją pewne wskazówki MOV między dwie operacje porównywania.
-
Porównać te operacje użycia tym samym operandy.
-
Wartości argumentów są zmieniane przez instrukcje MOV.
W tym scenariuszu mogą zostać pominięte instrukcji Jeżeli w drugiej operacji porównywania.
Uwagi
-
Ten problem może również wystąpić, gdy używasz opcji/O2 lub opcji/OX do tworzenia aplikacji.
-
Ten problem nie występuje na x86 platformy.
Przyczyna
Ten problem występuje, ponieważ Optymalizator kompilator błędnie zakłada, że flagi, która jest ustawiana przez operacji XOR może być używany bez dołączania operacja porównania.
Rozwiązanie
Informacje o poprawce
Obsługiwana poprawka jest udostępniana przez firmę Microsoft. Jednak ta poprawka jest przeznaczona tylko do usunięcia problemu opisanego w tym artykule. Zastosuj poprawkę tylko w systemach, w których występuje problem opisany w tym artykule. Ta poprawka może być wciąż w fazie testowania. Jeśli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca, aby poczekać na następną aktualizację oprogramowania zawierającą tę poprawkę.
Jeśli poprawka jest dostępna do pobrania, pojawi się sekcja "Poprawka dostępna do pobrania" na początku tego artykułu z bazy wiedzy Knowledge Base. Jeśli nie ma tej sekcji, skontaktuj się z Obsługą i Wsparciem Klienta Microsoft w celu uzyskania poprawki.
Uwaga Jeśli wystąpią dodatkowe błędy lub konieczność rozwiązania problemu, być może trzeba będzie utworzyć osobne zlecenie usługi. Zwykłe koszty obsługi będą zastosowane do dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu określonej poprawki. Aby uzyskać pełną listę numerów telefonów pomocy technicznej i obsługi klienta firmy Microsoft lub utworzyć osobne zlecenie usługi, odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://support.microsoft.com/contactus/?ws=supportUwaga "Poprawka dostępna do pobrania" zawiera listę języków, dla których dostępna jest poprawka. Jeśli odpowiedni język nie jest widoczny, to dlatego, że poprawka nie jest dostępna dla danego języka.
Wymagania wstępne
Musi mieć Visual Studio 2005 z dodatkiem SP 1 zainstalować tę poprawkę.
Wymagania dotyczące ponownego uruchomienia
Nie musisz ponownie uruchomiać komputera po zastosowaniu tej poprawki.
Informacje dotyczące zastępowania poprawek
Ta poprawka nie zastępuje żadnych innych poprawek.
Informacje o plikach
Wersja anglojęzyczna tej poprawki ma atrybuty plików (lub nowsze) wymienione w poniższej tabeli. Daty i godziny odpowiadające tym plikom zostały podane w formacie uniwersalnego czasu koordynowanego (UTC, Coordinated Universal Time). Po wyświetleniu informacji o pliku są konwertowane na czas lokalny. Aby zobaczyć różnicę między czasem UTC i czasem lokalnym, należy użyć z karty Strefa czasowa w aplecie Data i godzina w Panelu sterowania.
Nazwa pliku |
Wersja pliku |
Rozmiar pliku |
Data |
Godzina |
Platforma |
---|---|---|---|---|---|
C2.dll |
14.0.50727.3080 |
2,273,280 |
19-lis-2008 |
18:52 |
x86 |
C2.dll |
14.0.50727.3080 |
7,192,576 |
19-lis-2008 |
23:25 |
IA-64 |
C2.dll |
14.0.50727.3080 |
2,490,368 |
19-lis-2008 |
23:26 |
x86 |
C2.dll |
14.0.50727.3080 |
3,600,384 |
19-lis-2008 |
23:33 |
x64 |
C2.dll |
14.0.50727.3080 |
2,203,648 |
19-lis-2008 |
23:33 |
x86 |
Obejście problemu
Aby obejść ten problem, użyj jednej z następujących metod:
-
Słowo kluczowe volatile należy użyć przy deklarowaniu zmiennych, które są używane w instrukcji Jeżeli .
-
Wyłącz opcję optymalizacji szybkości. Na przykład można zastąpić opcję/OT z opcją/OS (kod małych korzyść) . Lub użyć opcji/O1 zamiast opcji/O2 lub opcji/OX .
-
Dodaj wiersz kodu przed operacji porównaj instrukcji Jeżeli w drugim. Na przykład dodać instrukcję printf .
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.
Więcej informacji
Aby uzyskać więcej informacji o jeden lub więcej kodów, które instrukcji może działać niepoprawnie podczas korzystania z funkcji optymalizacji kodu w programie Visual Studio 2005 kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
925792 jedną lub więcej instrukcji kodu mogą działać niepoprawnie podczas korzystania z funkcji optymalizacji kodu w programie Visual Studio 2005
Aby uzyskać więcej informacji dotyczących terminologii aktualizacji oprogramowania, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
824684 Opis standardowej terminologii używanej do opisywania aktualizacji oprogramowania firmy Microsoft