- 博客(8)
- 资源 (4)
- 收藏
- 关注
原创 linux内核0.11——内核编程语言和环境
内核编程语言和环境as86与GNU as汇编对于汇编这种语言,相信所有同胞们都是望而却步。然而由于操作系统许多关键代码要求很高的执行速度和效率,因此在系统源码中通常会有10%左右的起关键作用的汇编语言。linux的32位初始化代码、所有中断和异常处理、许多宏定义都是用汇编或嵌入汇编。 系统内汇编代码分为两种,一种是as86汇编器用于编译内核中的boot/bootsect.s引导山区程序和boot/
2017-05-04 21:50:07 2443
转载 全局偏移表(GOT)和过程链接表(PLT)
全局偏移表(GOT)和过程链接表(PLT) GOT 表ELF 格式的共享库使用 PIC 技术使代码和数据的引用与地址无关,程序可以被加载到地址空间的任意位置。PIC 在代码中的跳转和分支指令不使用绝对地址。PIC 在 ELF 可执行映像的数据段中建立一个存放所有全局变量指针的全局偏移量表 GOT对于模块外部引用的全局变量和全局函数,用 GOT 表的表项内容作为地址来间接寻址
2017-05-03 21:29:51 988
原创 C语言——链接的思考
对于链接的思考 静态链接 750Kb 506Kb ________________> libc.a 产生:a.out 1Kb /hello.o ----| \_________
2017-05-03 20:24:58 312
原创 C语言——内存的思考
对于内存的思考数据段和堆就像个堆栈段能够根据需要自动增长一样,数据段页包含了一个对象,用于完成这个任务,这就是堆(heap)。堆区域用于动态分配的存储,也就是通过malloc()函数获得内存,并通过指针访问。堆中所有的东西都是匿名的, 不能按照名字直接访问,只能通过指针间接访问。从堆中获取内存的唯一办法就是通过调用malloc(以及同类的calloc、realloc等)库函数。 callo
2017-05-03 20:23:47 295
原创 C语言——指针与数组区别
数组与指针的讨论数组定义并不等同于指针的外部声明!声明?定义?定义 只能出现在一个地方 确定对象的类型并分配内存,用于创建心得对象,如:int my_array[100];声明 可以多次出现 描述对象的类型,用于指代其他地方定义的对象(例如在其他文件里),如:extern int my_array[]extern对象声明告诉编译器对象的类型和名字,对象的内存分配则在别处进行
2017-05-03 20:21:01 370
原创 C语言——程序运行时数据结构
运行时的数据结构段目标文件和可执行文件有几种不同格式,在大多数Svr4实现中采用一种叫做ELF(原意位”可扩展链接器格式“、现在代表 ”可执行文件和链接格式“)。其他系统中可执行文件格式是COFF(普通目标文件格式)。所有不同格式具有一个共同概念”段(segments)“。就目标文件而言它们是二进制文件中简单的区域,里面保存了某种特 定类型(如符号表条目)相关信息。术语section是ELF
2017-05-03 20:11:14 786
原创 C语言——声明
分析C语言的声明(类)结构体struct s_tag {int a[100]};struct s_tag orange,lime,lemon;struct s_tag twofold(struct s_tag s){int j;for(j = 0;j < 100;j++)s.a[j] *= 2;return s;}void main(){int i;for(i = 0;i <
2017-05-03 20:05:40 375
原创 linux下用GPRS模块发送POST请求
GPRS模块发送POST请求 相信大家只要是80、90后都知道GPRS是什么吧(啥?不记得了!)记不记得小时候偷偷用手机上网看学(you)习(xi)资料,手机最上面一个大写的’G‘在不停的闪,那个就是GPRS网络,后来又出现了E(EGPRS)、H也就是大家常说的几G网,现在发展到4G网速比当年玩小霸王手机的时候快了......不知多少倍。 说了这么多废话,那我们到底问什么用这个
2017-05-03 18:52:11 1517
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人