传递指针的引用与传递指针的区别 反汇编
2011-01-15 07:32
387 查看
小菜不懂反汇编。。本文是 copy 过来的。。study study 。。
参数传递指针时将直接对指针指向的地址进行操作
传递指针的引用时,通过间接寻址,来实现对[指针指向的地址]进行操作。
看看下面一段程序反汇编后的内容就很清楚了
参数传递指针时将直接对指针指向的地址进行操作
传递指针的引用时,通过间接寻址,来实现对[指针指向的地址]进行操作。
看看下面一段程序反汇编后的内容就很清楚了
#include <iostream> using namespace std; void f1(int *&a) { int *b; b=a; } void f2(int *a) { int *b; b=a; } void main() { int m=10; int *n=&m; f1(n); f2(n); }
* Referenced by a CALL at Address: |:00401187 | :00401150 55 push ebp :00401151 8BEC mov ebp, esp :00401153 51 push ecx //[ebp+08]即为压栈内容:n的有效地址 :00401154 8B4508 mov eax, dword ptr [ebp+08] //取得主函数中m的有效地址--》edx :00401157 8B10 mov edx, dword ptr [eax] //b=a; :00401159 8955FC mov dword ptr [ebp-04], edx :0040115C 59 pop ecx :0040115D 5D pop ebp :0040115E C3 ret * Referenced by a CALL at Address: |:00401190 | :00401160 55 push ebp :00401161 8BEC mov ebp, esp :00401163 51 push ecx //取得压栈内容:n的有效内容(即m的有效地址) :00401164 8B4508 mov eax, dword ptr [ebp+08] //b=a; :00401167 8945FC mov dword ptr [ebp-04], eax :0040116A 59 pop ecx :0040116B 5D pop ebp :0040116C C3 ret ---------------> 函数开始 <---------------------------- :00401170 55 push ebp :00401171 8BEC mov ebp, esp :00401173 83C4F8 add esp, FFFFFFF8 int m=10; :00401176 C745FC0A000000 mov [ebp-04], 0000000A int *n=&m; :0040117D 8D45FC lea eax, dword ptr [ebp-04] :00401180 8945F8 mov dword ptr [ebp-08], eax f1(n); //由于形参是引用变量,所以将n的有效地址压栈 :00401183 8D55F8 lea edx, dword ptr [ebp-08] :00401186 52 push edx :00401187 E8C4FFFFFF call 00401150 :0040118C 59 pop ecx f2(n); //由于形参是指针变量,所以将n的有效内容压栈(即m的有效地址) :0040118D FF75F8 push [ebp-08] :00401190 E8CBFFFFFF call 00401160 :00401195 59 pop ecx :00401196 59 pop ecx :00401197 59 pop ecx :00401198 5D pop ebp :00401199 C3 ret
相关文章推荐
- 【补足基础】C++中引用传递与指针传递区别【转】
- C++中引用传递与指针传递区别
- C++中引用传递与指针传递区别(进一步整理)
- C C++中关于值传递和引用传递,指针传递之间的区别
- 值传递、指针传递、引用传递的区别
- 汇编分析参数传递中的地址传递与值传递的区别(指针,引用,值传递)
- C++中引用传递与指针传递区别
- C/C++函数形参传实参时值传递、指针传递、引用传递的区别
- 值传递丶指针传递丶引用传递的区别
- 值传递、指针传递、引用传递的区别
- 【转载】C++中引用传递与指针传递区别(进一步整理)
- 值传递、指针传递、引用传递的区别
- C++中引用传递与指针传递区别
- c++中值传递,引用传递,指针传递的区别
- 向函数中传递指针和传递指针的引用的区别
- 向函数中传递指针和传递指针的引用的区别
- C++中引用传递与指针传递区别
- 值传递、指针传递、引用传递的区别
- C++中引用传递与指针传递区别(进一步整理)
- C++中引用传递与指针传递区别(进一步整理)