„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Hält der „Sperr“-Befehl in der x86-Assembly den Bus auf unbestimmte Zeit?

Hält der „Sperr“-Befehl in der x86-Assembly den Bus auf unbestimmte Zeit?

Veröffentlicht am 08.11.2024
Durchsuche:607

 Does the \

Grundlegendes zum „Lock“-Befehl im x86-Assembly

Der „Lock“-Befehl im x86-Assembly ist ein Präfix, das den ausschließlichen Besitz des Busses für den nachfolgenden Befehl erzwingt. Dadurch wird sichergestellt, dass die CPU für die Dauer dieser Anweisung die vollständige Kontrolle über die Cache-Zeile hat.

Deaktivierung der Bussperre

Entgegen der allgemeinen Auffassung führt das Präfix „lock“ nicht dazu, dass die CPU gesperrt wird den Bus auf unbestimmte Zeit. Die Sperre wird nach der Ausführung der nachfolgenden Anweisung aufgehoben. Dadurch kann die CPU die optimale Leistung aufrechterhalten, indem sie den Bus nur dann sperrt, wenn dies unbedingt erforderlich ist.

Implementierung der Addition mit „Lock“

Der von Ihnen bereitgestellte Codeausschnitt implementiert ein atomares Inkrement eines langen Wortes bei ein Speicherort, der durch den Wert im ECX-Register angegeben wird:

  1. movl 4(%esp), �x: Kopiert die Adresse der Variablen, die inkrementiert werden soll, in das ECX-Register.
  2. incl (�x): Erhöht das lange Wort atomar an der im ECX-Register gespeicherten Adresse.
  3. mov $0,�x: Setzt das EAX-Register auf 0.
  4. setne %al: Setzt den Wert des Al-Registers auf 1, wenn der neue Wert der Variablen nicht gleich 0 ist (was anzeigt, dass die Inkrementierungsoperation erfolgreich war).

Das Ergebnis ist, dass die Variable atomar um erhöht wird 1, und das EAX-Register wird auf 0 gesetzt, wenn der neue Wert 0 ist, andernfalls 1. Beachten Sie, dass es sich bei dieser Operation um eine Inkrementierung und nicht um eine Addition handelt.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3