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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

反汇编基础-数组和指针的反汇编代码分析

發(fā)布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 反汇编基础-数组和指针的反汇编代码分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

程序源碼如下:

#include <stdio.h>int main(){const char c = 'A';char str[] = "Hello World!";str[0] = c;str[1] = 'B';str[2] = 'C';str[3] = 'D';str[4] = 'E';char *p_str = new char[5];*(p_str) = 'A';*(p_str + 1) = 'B';*(p_str + 2) = 'C';return 0; }

其中對應的匯編代碼如下:




從上面的匯編代碼可以看到如下幾點:
1.const char c='A';
其實就是把一個byte放入了ptr指針指向c地址,然后一個[]表名是里面的值,把A的ASCII放進去了。


2.char str[]="Hello World!";
這里面做的工作其實只是把這個"Hello World"這個字符串,就是4字節(jié),4字節(jié)的操作,先把他放到某一寄存器,再把這寄存器里面的數(shù)據(jù)放到str指向的地址中。


3.下面幾個要先說明幾點第一個imul這是有符號乘,shl是左移,和C/C++里面的一樣。
所有根據(jù)對str[0]、str[1]、str[2]等這些操作可以發(fā)現(xiàn)如下結論,當為2的倍數(shù)時,就是左移,但不是2的倍數(shù)就是乘(這樣的設計方式真實太巧妙了!)


4,然而對*(p_str+某一個數(shù)值),這個其實是把p_str指向的地址讀入一個寄存器,然后在往這個地址放值。

總結

以上是生活随笔為你收集整理的反汇编基础-数组和指针的反汇编代码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。