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

问题描述 投票:0回答:4

C++编译器在程序中使用哪些不同的寄存器? SP和FP有什么区别?如果可能的话,请给我指出一些详细的参考文档。很想知道编译器中发生的底层事情。是否可以在 Visual Studio 中执行程序时查看这些寄存器?

c++ visual-studio cpu-registers
4个回答
3
投票

您可以要求编译器输出它从源代码生成的汇编代码,它是您正在寻找的 /FA 和 /Fa 编译器命令行参数:msdn 链接到 /FA 编译器参数
在运行时,当您在调试器下运行程序时,您可以打开“寄存器”窗口,并查看执行过程中值如何变化 - 有时它非常有用。操作方法如下:关于“寄存器”窗口的 msdn 文档
如果您要进行更认真的调试,我建议您花一些时间学习使用此功能:Windows 调试工具,而不仅仅是使用内置的 VS 调试器。


0
投票

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

这是 Wikipedia 上关于英特尔芯片的一个很好的参考。


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

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

上面的链接包含更多描述和图片。


-2
投票
有针对此类问题的调试器。

© www.soinside.com 2019 - 2024. All rights reserved.