反汇编之C++的内联
发布日期:2021-05-26 20:04:54
浏览次数:14
分类:技术文章
本文共 834 字,大约阅读时间需要 2 分钟。
C/C++提供了内联函数机制
内联函数就是向编译器建议:编译这个函数的时候.直接把函数展开,而不是进行函数调用call.当然编译器并不接受这个建议.仍然把他当做普通函数进行编译
使用内联函数的优点:减少函数调用的操作.也就是免去了保存堆栈现场,返回地址,参数进栈.分配栈空间,跳转.回收栈空间.恢复堆栈现场,虽然使用宏函数可以实现其效果.但是宏函数不能在编译阶段提供类型检查,为bug留下隐患,内联函数在编译时一定会进行类型检查
内联函数的缺点:造成代码膨胀.把一个复杂.函数体较大.多出调用的函数使用内联函数实现.是一个错误的决定.
int add_not_inline(int a, int b)
{
return a + b;
}
inline int add_inline(int a, int b)
{
return a + b;
}
int main()
{
int a, b;
//a, b的初始化操作省略
int c, d;
c = add_not_inline(a, b);
d = add_inline(a, b);
return 0;
}
c = add_not_inline(a, b);
00DD17DC mov eax,dword ptr [b]
00DD17DF push eax
00DD17E0 mov ecx,dword ptr [a]
00DD17E3 push ecx
00DD17E4 call add_not_inline (0DD1311h)
00DD17E9 add esp,8
00DD17EC mov dword ptr [c],eax
d = add_inline(a,b);
mov edx,dword ptr [a]
mov edx,dword ptr [b]
mov dword ptr [d],edx
从汇编的角度可以看出来.当内联函数被编译器接纳时.直接展开.没有压栈.call.之类的指令
转自
转载地址:https://blog.csdn.net/Gaodes/article/details/81701907 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月17日 08时03分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
通过域名获取主机IP -- struct addrinfo
2019-04-27
【C++】算法集锦(8):从两数和问题拓展到一百数和问题
2019-04-27
【C++】算法集锦(9):背包问题
2019-04-27
【C++】算法集锦(10)通俗讲kmp算法
2019-04-27
【C++】算法集锦(12):高楼扔鸡蛋
2019-04-27
【图解】拥塞控制
2019-04-27
线程上下文切换
2019-04-27
什么是服务熔断?
2019-04-27
服务器压力过大?CPU打满?我来帮你快速检查Linux服务器性能
2019-04-27
C++面经总结之《Effective C++》(一)
2019-04-27
C++面经总结之《Effective C++》(二)
2019-04-27
这是什么“虎狼之词”啊!!!程序员的健康问题,看一线老中医怎么说!!!
2019-04-27
打开我的收藏夹 -- Python数据分析杂谈
2019-04-27
linux shell — 6.初识 EXT2 文件系统
2019-04-27
python - 【用户、商品】【购买、浏览】数据处理
2019-04-27
python - sql + pandas 与 sqlite 结合
2019-04-27
python - 使用sql 分析(06 - 15)国内各省GDP
2019-04-27
python - 抓取汇率数据分析美元和欧元对RMB的变化曲线
2019-04-27
python 数据科学 - 【回归分析】 ☞ 线性回归(2)
2019-04-27
设计模式——工厂模式
2019-04-27