2013年2月21日

内存之栈与调用管理

摘要: 原本以为栈就那回事,存放一下临时变量,参与一下函数的调用,但是今天看《程序员的自我修养》又让我对栈加深了了解我这里只想说下我不知道的,至于那些调用惯例我就不多说了,理解起来不是很难除了参数的传递之外,函数与调用方的几哦啊胡还有一个渠道就是返回值,eax是传递返回值的同道,但是eax本身只有4字节,大于4字节的采用edx和eax做返回值,而对于超过8字节的返回类型参照下面的例子 1 typedef struct big_thing 2 { 3 char buf[128]; 4 }big_thing; 5 6 big_thing return_test() 7 { 8 big_t... 阅读全文

posted @ 2013-02-21 21:59 追寻前人的脚步 阅读(176) 评论(0) 推荐(0) 编辑

浅析程序的装载

摘要: 在《自己动手写操作系统》中有一段代码,通过这段代码大致可以让人知道装载是怎么回事(静态链接)首先要分析下elf的文件结构,我就简单的说了,elf首先是一个文件头表,顾名思义,这个文件头表里面保存的是文件的信息,其中一个很重要的信息是程序的入口地址,接着还有若干程序头表,这个比较重要,每一个程序头表对应着elf可执行文件中的一段。程序头表中包含有所描述的段要加载到内存的那个位置,还有段的大小。有了上述这些信息,下面就来说下程序的装载的步骤:1. 检查elf可执行文件格式的有效性,比如魔术,程序头表中段的数量2.根据elf可执行文件的程序头表的描述,对elf文件进行映射,比如代码,数据,只读数据3 阅读全文

posted @ 2013-02-21 20:57 追寻前人的脚步 阅读(232) 评论(0) 推荐(0) 编辑

《自己动手写操作系统》本书脉络

摘要: 书的脉络其实一个操作系统逐渐完成的过程1. boot 从软盘启动,机器会读软盘的第一个扇区即引导扇区,512字节,所以这个程序会很简单,boot就完成两件事,第一把loader读入内存,第二把控制权交给loader2. loader 中完成了三件事,第一把kernel读入内存,第二跳到保护模式,第三把控制权交给kernel(这一步需要注意一下,程序把kernel的位置从新放置了,这里类似于装载下篇博文会讲到)3. kernel 进入到kernel,其余的就是实现中断4. 进程及进程的切换,注意进程是怎么实现的,以及进程之间的堆栈切换5. 系统调用,说白了也是一种中断,软中断。 阅读全文

posted @ 2013-02-21 14:53 追寻前人的脚步 阅读(137) 评论(0) 推荐(0) 编辑

导航