Verstehen der Rolle von „Lock“ in der x86-Assemblierung
Die „Lock“-Anweisung ist ein faszinierendes Element in der x86-Assembly, das für seine bekannt ist Fähigkeit, die Busnutzung durch die CPU zu regulieren. Dieser Artikel befasst sich mit der Komplexität dieses rätselhaften Befehls und beantwortet zwei kritische Fragen: sein Timing für die Freigabe des Busses und seine Implementierung der Addition.
Wann gibt die CPU den Bus nach einem „Sperr“-Befehl frei? ?
Entgegen der landläufigen Meinung fungiert „lock“ nicht als eigenständige Anweisung, sondern dient als Präfix für die nachfolgende Anweisung. Typischerweise handelt es sich bei dieser Anweisung um eine Anweisung, die eine Lese-, Änderungs- und Schreiboperation im Speicher ausführt, beispielsweise „incl“ oder „cmpxchg“.
Wenn die CPU auf ein „Lock“-Präfix stößt, übernimmt sie die ungeteilte Kontrolle über das entsprechende Cache-Zeile für die Dauer des Vorgangs. Diese Exklusivität wird oft durch die Aktivierung einer Bussperre ermöglicht, obwohl der Prozessor versucht, diese Methode wann immer möglich zu umgehen. Es ist wichtig zu beachten, dass diese Bussperre ausschließlich für die Dauer der gesperrten Anweisung in Kraft bleibt.
Wie implementiert der „Sperr“-Code den Zusatz?
Im bereitgestellter Codeausschnitt:
Es ist wichtig zu erkennen, dass dieser Code eine Inkrementierung und keine Addition durchführt.
Das obige ist der detaillierte Inhalt vonWas sind die Feinheiten des Präfixes „lock' in der x86-Assembly und welche Auswirkungen hat es auf die Busnutzung und den Speicherbetrieb?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!