關於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。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章