汇编--C++/c返回值代码分析

简介: 汇编--C++/c返回值代码分析

汇编–C++/c返回值代码分析

函数调用、返回值运用的代码

10: main()
11: {
00401050 push ebp
00401051 mov ebp,esp
00401053 sub esp,44h
00401056 push ebx
00401057 push esi
00401058 push edi
00401059 lea edi,[ebp-44h]
0040105C mov ecx,11h
00401061 mov eax,0CCCCCCCCh
00401066 rep stos dword ptr [edi]
12:
13: int m;
14: m=plus(1,3);
00401068 push 3
0040106A push 1
0040106C call @ILT+0(plus) (00401005)
00401071 add esp,8

00401074 mov dword ptr [ebp-4],eax //这个是存入数据的语句,这个时候调用plus函数已经堆栈平衡了,这层调用是发生在main函数内的 ebp-4是变量,一般返回值都是写在eax内的

15: printf(“m=%d”,m);
00401077 mov eax,dword ptr [ebp-4]
0040107A push eax
0040107B push offset string “m=%d” (0042201c)
00401080 call printf (004010b0)
00401085 add esp,8
16: __asm
17: {
18: mov eax,eax
00401088 mov eax,eax
19: }
20: return;
21:
22: }
0040108A pop edi
0040108B pop esi
0040108C pop ebx
0040108D add esp,44h
00401090 cmp ebp,esp
00401092 call __chkesp (00401130)
00401097 mov esp,ebp
00401099 pop ebp
0040109A ret
相关文章
|
3月前
|
存储 编译器 C语言
【C/C++ 函数返回的奥秘】深入探究C/C++函数返回:编译器如何处理返回值
【C/C++ 函数返回的奥秘】深入探究C/C++函数返回:编译器如何处理返回值
420 3
|
3月前
|
JavaScript 编译器 API
【C++ 函数和过程 进阶篇】全面掌握C++函数返回值:从入门到精通的实战指南
【C++ 函数和过程 进阶篇】全面掌握C++函数返回值:从入门到精通的实战指南
136 1
|
3月前
|
API 数据库 C语言
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
211 0
|
3月前
|
安全 算法 C++
【C++泛型编程 进阶篇】模板返回值的优雅处理(二)
【C++泛型编程 进阶篇】模板返回值的优雅处理
92 0
|
3月前
|
安全 算法 编译器
【C++泛型编程 进阶篇】模板返回值的优雅处理(一)
【C++泛型编程 进阶篇】模板返回值的优雅处理
94 0
|
2月前
|
编译器 C++ 开发者
C++一分钟之-返回值优化与Move Semantics
【6月更文挑战第19天】C++的RVO与移动语义提升效率,减少对象复制。RVO是编译器优化,避免临时对象的创建。移动语义通过右值引用和`std::move`转移资源所有权。注意RVO不是总有效,不应过度依赖。使用移动语义时,避免误用`std::move`导致对象无效。示例展示了RVO和移动构造函数的应用。理解并恰当使用这些机制能写出更高效代码。
36 3
|
3月前
|
存储 C++
C/C++中的整数除法运算与汇编指令DIV和IDIV
C/C++中的整数除法运算与汇编指令DIV和IDIV
49 1
|
3月前
|
存储 安全 程序员
C/C++中的整数乘法运算与汇编指令MUL和IMUL
C/C++中的整数乘法运算与汇编指令MUL和IMUL
44 0
|
3月前
|
编译器 C++
C/C++中的逻辑运算与汇编指令的交互
C/C++中的逻辑运算与汇编指令的交互
28 0
|
3月前
|
编译器 程序员 C++
C/C++逻辑与运算与汇编指令的关系
C/C++逻辑与运算与汇编指令的关系
42 0