Condividi tramite


Sintassi register

Il debugger può controllare i registri e i registri a virgola mobile.

Quando si usa un registro in un'espressione, è necessario aggiungere un at sign ( @ ) prima del registro. Questo segno indica al debugger che il testo seguente è il nome di un registro.

Se si usa la sintassi delle espressioni MASM, è possibile omettere il segno per determinati registri molto comuni. Nei sistemi basati su x86 è possibile omettere i registri eax, ebx, ecx, edx, esi, edi, ebp, eipefl . Tuttavia, se si specifica un registro meno comune senza un segno, il debugger tenta prima di tutto di interpretare il testo come numero esadecimale. Se il testo contiene caratteri non esadecimali, il debugger interpreta quindi il testo come simbolo. Infine, se il debugger non trova una corrispondenza di simboli, il debugger interpreta il testo come registro.

Se si usa la sintassi delle espressioni C++, il segno at è sempre obbligatorio.

Il comando r (Registers) è un'eccezione a questa regola. Il debugger interpreta sempre il primo argomento come registro. Un segno non è obbligatorio o consentito. Se è presente un secondo argomento per il comando r , viene interpretato in base alla sintassi dell'espressione predefinita. Se la sintassi dell'espressione predefinita è C++, è necessario usare il comando seguente per copiare il registro ebx nel registro eax .

0:000> r eax = @ebx

Per altre informazioni sui registri e le istruzioni specifici per ogni processore, vedere Architettura del processore.

Flag su un processore basato su x86

I processori basati su x86 usano anche diversi registri a 1 bit noti come flag. Per altre informazioni su questi flag e sulla sintassi che è possibile usare per visualizzarli o modificarli, vedere Flag x86.

Registri e thread

Ogni thread ha i propri valori di registro. Questi valori vengono archiviati nei registri della CPU quando il thread è in esecuzione e in memoria quando viene eseguito un altro thread.

In modalità utente, qualsiasi riferimento a un registro viene interpretato come il registro associato al thread corrente. Per altre informazioni sul thread corrente, vedere Controllo di processi e thread.

In modalità kernel, qualsiasi riferimento a un registro viene interpretato come il registro associato al contesto del registro corrente. È possibile impostare il contesto di registrazione in modo che corrisponda a un thread, un record di contesto o un frame trap specifico. È possibile visualizzare solo i registri più importanti per il contesto di registro specificato e non è possibile modificarne i valori.