反汇编基础-数组和指针的反汇编代码分析
生活随笔
收集整理的這篇文章主要介紹了
反汇编基础-数组和指针的反汇编代码分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
程序源碼如下:
#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字節,4字節的操作,先把他放到某一寄存器,再把這寄存器里面的數據放到str指向的地址中。
3.下面幾個要先說明幾點第一個imul這是有符號乘,shl是左移,和C/C++里面的一樣。
所有根據對str[0]、str[1]、str[2]等這些操作可以發現如下結論,當為2的倍數時,就是左移,但不是2的倍數就是乘(這樣的設計方式真實太巧妙了!)
4,然而對*(p_str+某一個數值),這個其實是把p_str指向的地址讀入一個寄存器,然后在往這個地址放值。
總結
以上是生活随笔為你收集整理的反汇编基础-数组和指针的反汇编代码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STL学习笔记-multimap的基本使
- 下一篇: C++|STL学习笔记-对STL中关联容