__builtin_apply_args() intrisic函数在不同架构上的实现
架构 实现 函数 不同 __ apply args
2023-09-11 14:15:47 时间
因为在c中,函数调用的环境是由编译器创建的,语言本身除了提供形式上的调用关系之外,并不提供对函数调用栈的访问,如果想对堆栈进行结构化的解释,需要编译器提供支持,gcc提供了访问堆栈的扩展接口,它们包括__builtin_apply_args(),
__builtin_apply()和
__builtin_return
()几个主要的函数,gcc扩展的这类函数可以帮助我们hack进函数调用的内部,做到单靠C语言本身完不成的工作。下面分析一下MIPS, ARM, X86和RISCV,Xtensa五种架构下,__builtin_apply_args对参数帧的构造和hack参数的方式.
MIPS
从图中可以看到,__builtin_apply_args()构造了两个参数帧结构,所以,可以有两种方式构造栈帧
void hack1(long a, long b, long c, long d, long e, long f)
{
......
unsigned long **v0 = (unsigned long **)__builtin_apply_args();
para0 = v[1];
para1 = v[2];
para2 = v[3]
相关文章
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- 重温.NET下Assembly的加载过程 ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线
- python模块——socket (实现简单的C/S架构端通信操作CMD)
- 数仓建模—实时数仓架构发展史
- 当红架构Cloud Native,怎么搭建才能成为上云助攻手?
- CSDN日报20170531 ——《这个架构能实现吗?》
- MVC项目实践,在三层架构下实现SportsStore-05,实现导航
- ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现
- 神经网络架构PYTORCH-宏观分析
- 《Clojure Web开发实战》——第2章,第2.3节应用架构
- 孙玄:微服务架构中分布式事务实现方案如何取舍
- 《企业大数据系统构建实战:技术、架构、实施与应用》——第3章 企业大数据解决方案 3.1 企业大数据解决方案实现方式
- SQLite学习笔记(八)&&sqlite实现架构
- 软件架构的核心问题:怎样组织软件能更容易生成和维护解决问题的工具-业务决定架构
- 小红书如何实现高效推荐?解密背后的大数据计算平台架构
- 大数据架构和模式(五)——对大数据问题应用解决方案模式并选择实现它的产品
- 高负载、高并发网站架构知识汇总-大流量网站架构的几点认识
- 【深入理解计算机系统】 七:AVR指令集架构
- 面向未来的数据库体系架构思考:把数据库装入容器
- Keepalived+Nginx实现双机主备、双主热备高可用集群架构
- 【Dubbo】架构各层及实现
- 聊聊分布式定时任务中间件架构及其实现--转
- 如何使用JCA (J2EE 连接器架构)实现企业应用--转载
- 无服务架构如何发展而来 怎样实现工作
- 系统架构设计师-软件设计模式
- 中国电信史凡:SDN/NFV将占据未来网络架构主要位置
- 架构发展史Spring Cloud