Udostępnij przez


Informacje o oknie Rejestry w programie Visual Studio (C#, C++, Visual Basic, F#)

Okno Rejestry jest dostępne tylko wtedy, gdy debugowanie na poziomie adresu jest włączone w oknie dialogowym Opcje , węźle Debugowanie .

Rejestry to specjalne lokalizacje w procesorze (PROCESOR), które są używane do przechowywania małych fragmentów danych, nad którymi aktywnie pracuje procesor. Kompilowanie lub interpretowanie kodu źródłowego generuje instrukcje, które w razie potrzeby przenoszą dane z pamięci do rejestrów i z powrotem. Uzyskiwanie dostępu do danych w rejestrach jest bardzo szybkie w porównaniu z uzyskiwaniem dostępu do danych w pamięci, dlatego kod, który umożliwia procesorowi przechowywanie danych w rejestrze i uzyskiwanie do niego dostępu, często wykonuje się szybciej niż kod, który wymaga od procesora ciągłego ładowania i zwalniania rejestrów. Aby ułatwić kompilatorowi przechowywanie danych w rejestrach i wykonywanie innych optymalizacji, należy unikać używania zmiennych globalnych i jak najwięcej polegać na zmiennych lokalnych. Kod napisany w ten sposób charakteryzuje się dobrą lokalnością odniesienia. W niektórych językach, takich jak C/C++, programista może zadeklarować zmienną rejestru, która nakazuje kompilatorowi wypróbowanie najlepszego zachowania zmiennej w rejestrze przez cały czas. Aby uzyskać więcej informacji, zobacz Rejestrowanie słowa kluczowego.

Rejestry można podzielić na dwa typy: ogólnego przeznaczenia i specjalnego przeznaczenia. Rejestry ogólnego przeznaczenia przechowują dane dla operacji ogólnych, takich jak dodawanie dwóch liczb lub odwoływanie się do elementu w tablicy. Rejestry specjalne mają szczególne cele i specjalne znaczenie. Dobrym przykładem jest rejestr wskaźnika stosu, którego używa procesor do monitorowania stosu wywołań programu. Jako programista prawdopodobnie nie będziesz bezpośrednio manipulować wskaźnikiem stosu. Jednakże jest to kluczowe dla prawidłowego działania Twojego programu, ponieważ bez wskaźnika stosu procesor nie wiedziałby, gdzie powrócić po zakończeniu wywołania funkcji.

Większość rejestrów ogólnego przeznaczenia przechowuje tylko jeden element danych. Na przykład pojedyncza liczba całkowita, liczba zmiennoprzecinkowa lub element tablicy. Niektóre nowsze procesory mają większe rejestry, nazywane rejestrami wektorów, które mogą przechowywać małą tablicę danych. Ponieważ przechowują tak dużo danych, rejestry wektorowe umożliwiają bardzo szybkie operacje na tablicach. Rejestry wektorowe były po raz pierwszy używane na kosztownych superkomputerach o wysokiej wydajności, ale teraz stają się dostępne w mikroprocesorach, gdzie są one używane do znacznej korzyści w intensywnych operacjach graficznych.

Procesor ma zwykle dwa zestawy rejestrów ogólnego przeznaczenia, jeden zoptymalizowany pod kątem operacji zmiennoprzecinkowych i drugi dla operacji całkowitych. Nic dziwnego, że są to rejestry zmiennoprzecinkowe i całkowite.

Kod zarządzany jest kompilowany w czasie wykonywania do kodu natywnego, który uzyskuje dostęp do fizycznych rejestrów mikroprocesora. W oknie Rejestry są wyświetlane te rejestry fizyczne dla środowiska uruchomieniowego języka wspólnego lub kodu natywnego. Okno Rejestry nie wyświetla informacji o rejestrze dla skryptu lub aplikacji SQL, ponieważ skrypt i SQL to języki, które nie obsługują koncepcji rejestrów.

Aby uzyskać więcej informacji na temat wyświetlania okna Rejestry , zobacz Korzystanie z okna Rejestry.

Po zapoznaniu się z oknem Rejestry zostaną wyświetlone wpisy, takie jak EAX = 003110D8.

Symbolem po lewej stronie = znaku jest nazwa rejestru , EAXw tym przypadku. Numer po prawej stronie = znaku reprezentuje zawartość rejestru.

Okno Rejestry umożliwia wykonywanie więcej czynności niż tylko wyświetlanie zawartości rejestru. W trybie debugowania w kodzie natywnym możesz kliknąć na zawartość rejestru i edytować wartość. To nie jest coś, co należy zrobić losowo. Jeśli nie rozumiesz, że rejestr jest edytowany i zawarte w nim dane, wynik nieostrożnej edycji może być awarią programu lub innymi niepożądanymi konsekwencjami. Niestety, szczegółowe wyjaśnienie zestawów rejestrów różnych procesorów Intel i zgodnych z nimi wykracza daleko poza zakres tego krótkiego wprowadzenia.

Rejestrowanie grup

Aby zmniejszyć bałagan, okno Rejestry organizuje rejestry w grupach. Po kliknięciu prawym przyciskiem myszy okna Rejestry zostanie wyświetlone menu skrótów zawierające listę grup, które można wyświetlić lub ukryć w miarę dopasowania.

Flagi rejestru

W przypadku procesorów Intel x86 w oknie Rejestry mogą pojawić się następujące flagi . Podczas sesji debugowania można również edytować te flagi.

Flag Ustaw wartość
Przepełnienie OV = 1
Direction UP = 1
Przerwanie EI = 1
Znak PL = 1
Zero ZR = 1
Przeniesienie pomocnicze AC = 1
Parity PE = 1
Nieść CY = 1