摘要: 之前我们讲到了过程活动记录(AR),那么如何来操纵AR呢,一个可能的方法是,根据局部变量的地址进行推算,例如对于上面的a函数,执行a函数时的当前AR地址就是参数i的地址偏移8个字节,也就是 ((char*)&i) - 8。 然而,不同的C编译器,以及不同的硬件平台都会产生不同的AR结构布局,甚至在一 阅读全文
posted @ 2018-11-08 21:23 小时候挺菜 阅读(2678) 评论(0) 推荐(2) 编辑
摘要: C 语言自动提供的服务之一就是跟踪调用链——哪些函数调用了哪些函数,当下一个return语句执行后,控制将返回何处等。解决这个问题的经典机制是堆栈中的活动记录。 当每个函数被调用时,都会产生一个过程记录(或者类似的结构)。过程活动记录是一种数据结构,用于支持过程调用,并记录调用结束以后返回调用点所需 阅读全文
posted @ 2018-11-08 21:12 小时候挺菜 阅读(1240) 评论(0) 推荐(0) 编辑
摘要: ELF文件 在学习之前我们先看看ELF文件。 ELF分为三种类型:.o 可重定位文件(relocalble file),可执行文件以及共享库(shared library),三种格式基本上从结构上是一样的,只是具体到每一个结构不同。 下面我们就从整体上看看这3种格式从文件内容上存储的方式,spec上 阅读全文
posted @ 2018-11-08 12:30 小时候挺菜 阅读(998) 评论(0) 推荐(0) 编辑
摘要: minixml的中文说明手册:MiniXML中文文档.dochttp://wenku.baidu.com/view/25fd7d7f31b765ce050814f7.html xml源代码: C语言解析代码: 参考: https://www.cnblogs.com/dyllove98/archive 阅读全文
posted @ 2018-11-08 11:38 小时候挺菜 阅读(2484) 评论(0) 推荐(0) 编辑
摘要: 1. C语言函数的调用方式 _cdecl 调用 _cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈所以在函数调用栈中, 越右边的参数在栈的越低端,既内存地址越大。 2.实现 函数 阅读全文
posted @ 2018-11-08 11:32 小时候挺菜 阅读(1857) 评论(0) 推荐(0) 编辑
摘要: C语言中将变量名转换成字符串使用的是#符号,来看下边两个宏定义: 使用的时候自动将相应的变量名转换成字符串,示例代码: 输出内容: 原文链接: https://blog.csdn.net/Veabol/article/details/76491792 阅读全文
posted @ 2018-11-08 11:22 小时候挺菜 阅读(2810) 评论(0) 推荐(0) 编辑