VS C ++编译器使用了哪些不同的处理器寄存器?

时间:2009-08-30 09:07:00

标签: c++ visual-studio compiler-construction

程序中C ++编译器使用的寄存器有哪些? SP和FP有什么区别?如果可能的话,请指出一些详细的参考文档。很想知道编译器中发生的基本事情。是否可以在Visual Studio中执行程序期间查看这些寄存器。 感谢您的时间和帮助。 提前致谢, 光

4 个答案:

答案 0 :(得分:3)

您可以要求编译器输出它从源生成的汇编代码,它是您要查找的/ FA和/ Fa编译器命令行参数:msdn link to /FA compiler arg
在运行时,当您在调试器下运行程序时,您可以打开一个“寄存器”窗口,并查看值在执行期间如何变化 - 它有时非常有用。这是你如何做到的:msdn doc about "registers" window
如果你想进行更严肃的调试,我建议花些时间学习使用它:debugging tools for windows而不是仅使用内置的VS调试器。

答案 1 :(得分:0)

您的问题的答案取决于您编程的硬件。每个处理器系列都有自己的架构,因此它是自己的寄存器。

对于英特尔芯片,这是一个很好的reference on Wikipedia

答案 2 :(得分:0)

堆栈指针(SP)指向内存,用于存储与函数调用相关的数据,如函数参数,返回地址和局部变量。该数据形成每个函数调用的堆栈帧,并由帧指针(FP)指向。每个执行线程都有一个堆栈指针。每个函数调用都有自己的堆栈帧和帧指针。堆栈回溯通过每个嵌套函数调用的堆栈帧返回,允许您查看每个函数调用的参数和本地数据。

http://en.wikipedia.org/wiki/Frame_pointer#Structure

以上链接包含更多说明和图片。

答案 3 :(得分:-2)

有调试员这样的问题。