关于C++中的const的简单反汇编分析

我们尝试着去修改const常量的值,C++程序代码如下:
#include <iostream>

using namespace std;

int main()
{
	const int AI = 10;

	_asm 
	{
		lea ebx,AI
		mov dword ptr[ebx],30H
	}

	cout<<AI<<endl;

	return 0;
}

我们单步跟踪如下图:

根据AI所在地址修改其值如下图:

但是结果输出为:

为什么会出现这样的结果呢,接着我们来看看反汇编的代码:


从上图我们知道了为什么输出的值还是没有改变,这是因为由于在编译时AI的值已知,并且是const常量,所以生成的代码并不是引用AI,而且直接引用了立即数0Ah。


猜你喜欢

转载自blog.csdn.net/cyousui/article/details/14223321