VisualStudio调试器指南---Register窗⼝
寄存器处理器(CPU)中的特殊区域,⽤于存储处理器需要当前处理的少量数据。编译或解释源代码时会⽣成⼀些指令,这些指令根据需要将数据从内存移动到寄存器或反之。相对于访问内存数据,访问寄存器数据⾮常快。那些允许处理器将数据保留在寄存器并多次访问的代码,⽐起那些需要处理器不断加载和卸载寄存器的代码执⾏速度快得多。为了⽅便编译器将数据保存在寄存器中并实现其他优化,应避免使⽤全局变量⽽尽可能地依靠局部变量。称以此⽅式编写的代码具有良好的引⽤局部性。在某些语⾔中,如 C/C++ 中,程序员可以声明寄存器变量,它告诉编译器在所有时间尽可能地将该变量保留在寄存器中。
寄存器可分为两类:通⽤寄存器和专⽤寄存器。通⽤寄存器保存⽤于⼀般操作(如将两数相加或引⽤数组中的元素)的数据。专⽤寄存器具有特定⽤途和专门的意义。堆栈指针寄存器是⼀个好例⼦,处理器利⽤它跟踪程序的调⽤堆栈。程序员可能不会直接处理堆栈指针,但它对于程序正确运⾏⾄关重要。没有堆栈指针,处理器在函数调⽤完成后将不知道返回何处。
⼤多数通⽤寄存器只保存⼀个数据元素。例如单个整数、浮点数或某⼀数组元素。⼀些新的处理器具有较⼤的寄存器,称为向量寄存器,可以保存⼀个⼩的数组。由于它们可以保存较多数据,向量寄存器对于涉及数组的运算处理得⾮常快。向量寄存器最初是⽤在昂贵的、⾼性能超级计算机上,但现在也⽤于
微处理器,它们在密集的图形操作中具有很⼤优势。⼀个处理器通常有两组通⽤寄存器,⼀组针对浮点运算进⾏优化,⼀组针对整数运算进⾏优化。因此,它们被称为浮点寄存器和整数寄存器。托管代码在运⾏时被编译为⽤来访问微处理器的物理寄存器的本机代码。对于公共语⾔运⾏时或本机代码,“寄存器”窗⼝可以显⽰这些物理寄存器信息。⽽对于脚本或 SQL 应⽤程序,“寄存器”窗⼝不会显⽰寄存器信息,因为脚本或 SQL 都是不⽀持寄存器概念的语⾔
通过“寄存器”窗⼝不仅可以看到寄存器的内容,还可以完成更多任务。当本机代码处于中断模式时,可以单击寄存器内容并更改其值。这不是可以随意做的事。除⾮理解正在编辑的寄存器和它所包含的内容,草率编辑很可能导致程序崩溃或其他不良后果。
打开窗⼝
通过菜单栏
快捷键
Alt+5
窗⼝的使⽤
记住我查看寄存器值
在调试期间,窗⼝显⽰寄存器内容。为了减少混乱,“寄存器”窗⼝将寄存器组织成组,具体情况随平台和处理器类型的不同⽽不同。默认显⽰通⽤寄存器组。您可以显⽰或隐藏寄存器组。在窗⼝区域右键单击弹出如下菜单
⼤家根据⾃⼰的需要在上⾯菜单⾥勾选相应的菜单就显⽰相应的寄存器组,去掉勾选就隐藏。
单步执⾏时,特别是在汇编模式下,我们可以看到被修改的寄存器值会变红。
编辑寄存器值
1. 在“寄存器”窗⼝中,使⽤ Tab 或⿏标可以将插⼊点移到要更改的值的位置。在开始键⼊之前,光标必须位于要覆盖的值之前。
2. 键⼊新值。