日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C++笔记-二级指针在反汇编中的形式

發(fā)布時(shí)間:2025/3/15 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++笔记-二级指针在反汇编中的形式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

下面的程序都是x86程序。32位的程序

如下代碼:

#include <iostream> using namespace std;void test() {cout << "Hello World" << endl; }int main(int argc, int *argv[]) {int *p = new int(10);int **pp = &p;cout << pp << endl;test();getchar();return 0; }

先看下Debug版的反匯編:

上面是main函數(shù)的,看看test()函數(shù)

從中可以看到還是代碼還是比較多的,主要是看release版本。Debug版本稍微過(guò)一下。

32位機(jī)器編譯出來(lái)程序函數(shù)前都是

push ebp mov ebp, esp

進(jìn)入函數(shù)時(shí)要保存ebp的值。進(jìn)入函數(shù)后存esp的值。方便進(jìn)行堆棧內(nèi)的尋址,函數(shù)返回要恢復(fù)ebp的值。

從上面可以看到調(diào)用函數(shù)一般就是使用call。

看下和二級(jí)指針相關(guān)的反匯編代碼:

lea eax, [p] mov dword ptr [pp], eax

LEA為數(shù)據(jù)傳輸指令,[p]為p地址內(nèi)的值(因?yàn)槭侵羔?#xff0c;這個(gè)值也是地址)給eax。

然后使用mov指令把eax里面放的這個(gè)地址,以地址的形式放到pp中。

?

下面是release版本的反匯編:

?

從這里可以看到test()函數(shù)被優(yōu)化了,并且整個(gè)程序都變成十分簡(jiǎn)潔。Release版本還是比較6。

這里可以看到**pp被優(yōu)化了,在反匯編中可以看到,他僅僅是操作了指針p。

?

?

這里空間沒(méi)釋放,在此補(bǔ)下代碼:

#include <iostream> using namespace std;void test() {cout << "Hello World" << endl; }int main(int argc, int *argv[]) {int *p = new int(10);int **pp = &p;cout << pp << endl;test();getchar();delete p;return 0; } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的C++笔记-二级指针在反汇编中的形式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。