Delen via


Over het venster Registers in Visual Studio (C#, C++, Visual Basic, F#)

Het venster Registers is alleen beschikbaar als foutopsporing op adresniveau is ingeschakeld in het dialoogvenster Opties , knooppunt Foutopsporing .

Registers zijn speciale locaties binnen een processor (CPU) die worden gebruikt om kleine stukjes gegevens op te slaan waaraan de processor actief werkt. Bij het compileren of interpreteren van broncode worden instructies gegenereerd waarmee gegevens van het geheugen naar de registers worden verplaatst en opnieuw, indien nodig. Het openen van gegevens in registers is zeer snel vergeleken met het openen van gegevens in het geheugen, zodat code waarmee de processor gegevens in een register kan bewaren en deze herhaaldelijk kan openen, doorgaans sneller wordt uitgevoerd dan code die vereist dat de processor registers voortdurend laadt en laadt. Om het voor de compiler gemakkelijker te maken om gegevens in registers te bewaren en andere optimalisaties uit te voeren, moet u het gebruik van globale variabelen vermijden en zoveel mogelijk afhankelijk zijn van lokale variabelen. Men zegt van code die op deze manier is geschreven dat het een goede lokaliteit van referentie heeft. In sommige talen, zoals C/C++, kan de programmeur een registervariabele declareren, waardoor de compiler het beste kan proberen om de variabele altijd in een register te houden. Zie Trefwoord registreren voor meer informatie.

Registers kunnen worden onderverdeeld in twee typen: algemeen gebruik en speciaal doel. Algemene registers bevatten gegevens voor algemene bewerkingen, zoals het samenvoegen van twee getallen of het verwijzen naar een element in een matrix. Registers voor speciale doeleinden hebben specifieke doeleinden en gespecialiseerde betekenis. Een goed voorbeeld is het stack-pointer-register, dat de processor gebruikt om de aanroepstack van het programma bij te houden. Als programmeur zult u de stackpointer waarschijnlijk niet rechtstreeks manipuleren. Het is echter essentieel voor de goede werking van uw programma, omdat zonder de stackpointer de processor niet weet waar naar moet terugkeren aan het einde van een functie-aanroep.

De meeste algemene registers bevatten slechts één gegevenselement. Bijvoorbeeld één geheel getal, een drijvendekommagetal of een element van een matrix. Sommige nieuwere processors hebben grotere registers, vectorregisters genoemd, die een kleine matrix met gegevens kunnen bevatten. Omdat ze zoveel gegevens bevatten, kunnen vectorregisters bewerkingen met matrices zeer snel uitvoeren. Vectorregisters werden voor het eerst gebruikt op dure, krachtige supercomputers, maar worden nu beschikbaar op microprocessors waar ze worden gebruikt om een groot voordeel te hebben bij intensieve grafische bewerkingen.

Een processor heeft meestal twee sets algemene registers, één geoptimaliseerd voor drijvendekommabewerkingen en de andere voor gehele getallen. Deze worden zwevendekomma- en gehele-getallenregisters genoemd.

Beheerde code wordt tijdens runtime gecompileerd naar systeemeigen code die toegang heeft tot de fysieke registers van de microprocessor. In het venster Registers worden deze fysieke registers weergegeven voor algemene taalruntime of systeemeigen code. In het venster Registers worden geen registergegevens voor scripts of SQL-toepassingen weergegeven, omdat script en SQL talen zijn die het concept van registers niet ondersteunen.

Zie Het venster Registers gebruiken voor meer informatie over het weergeven van het venster Registers.

Wanneer u het venster Registers bekijkt, ziet u vermeldingen zoals EAX = 003110D8.

Het symbool links van het = teken is de registernaam, EAXin dit geval. Het nummer rechts van het = teken vertegenwoordigt de registerinhoud.

In het venster Registers kunt u meer doen dan alleen de inhoud van een register weergeven. Wanneer u zich in de onderbrekingsmodus in systeemeigen code bevindt, kunt u op de inhoud van een register klikken en de waarde bewerken. Dit is niet iets wat je willekeurig moet doen. Tenzij u het register begrijpt dat u bewerkt en de gegevens die het bevat, is het resultaat van onzorgvuldig bewerken waarschijnlijk een programmacrash of een ander ongewenst gevolg. Helaas valt een gedetailleerde uitleg van de registersets van de verschillende Intel- en Intel-compatibele processors veel verder dan deze korte inleiding.

Groepen registreren

Om de rommel te verminderen, worden in het venster Registers registers in groepen ingedeeld. Als u met de rechtermuisknop op het venster Registers klikt, ziet u een snelmenu met een lijst met groepen, die u naar wens kunt weergeven of verbergen.

Vlaggen registreren

Voor Intel x86-processors ziet u mogelijk de volgende vlaggen in het venster Registers . Tijdens een foutopsporingssessie kunt u deze vlaggen ook bewerken.

Flag Waarde instellen
Overflow OV = 1
Richting UP = 1
Onderbreken EI = 1
Teken PL = 1
Nul ZR = 1
Hulpoverdracht AC = 1
Parity PE = 1
Dragen CY = 1