To ciekawe, aby przeczytać inne odpowiedzi. Myślę, że @GJ jest prawdopodobnie na pieniądze.
Przez wiele lat zawsze było prawdą, że 32-bitowy odczyt i zapis był atomowy. Dopiero w ostatnich latach z bardzo agresywnym buforowaniem nie jest to już zagwarantowane.
Domyślam się, że dlatego wolę C++, Java lub niektóre takie między mną a kodem maszynowym. W dzisiejszych czasach kod maszynowy jest zbyt skomplikowany, aby można go było niezawodnie zapisać (chyba że robisz to za dużo, aby zachować swoje umiejętności). Na szczęście dzisiejsze kompilatory optymalizacyjne są tak dobre, że rzadko potrzebujesz wydajności zoptymalizowanego ręcznie asemblera.
Myślę, że masz rację. To ma sens. Dzięki. – IamIC
Nie zapomnij przyjąć odpowiedzi, jeśli ci pomogło;) –
Nie zawsze! Jeśli adres pamięci znajduje się w pamięci podręcznej, która korzysta z drugiego procesora w jednostce procesora, odczyt nie ma charakteru atomowego. Tak więc użyj "LOCK CMPXCHG EAX, [var]", który najpierw buforuje pamięć podręczną. –