Freigeben über


Registersyntax

Der Debugger kann Register und Gleitkommaregister steuern.

Wenn Sie ein Register in einem Ausdruck verwenden, sollten Sie vor dem Registrieren ein At-Zeichen ( @ ) hinzufügen. Dieses Zeichen teilt dem Debugger mit, dass der folgende Text der Name eines Registers ist.

Wenn Sie MASM-Ausdruckssyntax verwenden, können Sie das At-Zeichen für bestimmte sehr häufige Register weglassen. Auf x86-basierten Systemen können Sie das At-Zeichen für die Register eax, ebx, ecx, edx, esi, edi, ebp, eip und efl weglassen. Wenn Sie jedoch ein weniger häufiges Register ohne at-Zeichen angeben, versucht der Debugger zunächst, den Text als hexadezimale Zahl zu interpretieren. Wenn der Text nicht hexadezimale Zeichen enthält, interpretiert der Debugger den Text als Symbol. Wenn der Debugger schließlich keine Symbol-Übereinstimmung findet, interpretiert der Debugger den Text als Register.

Wenn Sie die C++-Ausdruckssyntax verwenden, ist das At-Zeichen immer erforderlich.

Der Befehl r (Registers) ist eine Ausnahme von dieser Regel. Der Debugger interpretiert immer sein erstes Argument als Register. (Ein At-Zeichen ist nicht erforderlich oder zulässig.) Wenn ein zweites Argument für den Befehl r vorhanden ist, wird es gemäß der Standardausdruckssyntax interpretiert. Wenn die Standardausdrucksyntax C++ lautet, müssen Sie den folgenden Befehl verwenden, um das ebx-Register in das eax-Register zu kopieren.

0:000> r eax = @ebx

Weitere Informationen zu den Registern und Anweisungen, die für jeden Prozessor spezifisch sind, finden Sie unter Prozessorarchitektur.

Flags auf einem x86-basierten Prozessor

x86-basierte Prozessoren verwenden auch mehrere 1-Bit-Register, die als Flags bezeichnet werden. Weitere Informationen zu diesen Flags und der Syntax, mit der Sie sie anzeigen oder ändern können, finden Sie unter x86-Flags.

Register und Threads

Jeder Thread verfügt über eigene Registerwerte. Diese Werte werden in der CPU-Registrierung gespeichert, wenn der Thread ausgeführt wird, und im Arbeitsspeicher, wenn ein anderer Thread ausgeführt wird.

Im Benutzermodus wird jeder Verweis auf ein Register als das Register interpretiert, das dem aktuellen Thread zugeordnet ist. Weitere Informationen zum aktuellen Thread finden Sie unter Steuern von Prozessen und Threads.

Im Kernelmodus wird jeder Verweis auf ein Register als das Register interpretiert, das dem aktuellen Registerkontext zugeordnet ist. Sie können den Registerkontext so festlegen, dass er einem bestimmten Thread, Kontextdatensatz oder Trapframe entspricht. Sie können nur die wichtigsten Register für den angegebenen Registerkontext anzeigen, und Sie können deren Werte nicht ändern.