2019-2020-1 20199327《Linux内核原理与分析》第三周作业

操作系统是如何工作的

计算机的三大法宝:

1.存储程序计算机;

2.函数调用堆栈机制;

3.中断机制;

函数调用堆栈

堆栈的作用

1.记录函数调用框架;

2.传递函数参数,方法:从左到右;

3.保存返回值的地址;

4.提供函数内部局部变量的存储空间;

相关寄存器和操作

ESP:堆栈指针;

EBP:基址指针;

push:栈顶地址减少4个字节,并将操作数放入栈顶存储单元;

pop:栈顶地址增加4个字节,并将栈顶存储单元的内容放入操作数;

栈是从高地址向低地址增加的。

其他关键寄存器

CS:EIP总是指向下一条的指令地址。

顺序执行:总是指向地址连续的下一条指令;

跳转/分支:执行这样的命令时,CS:EIP的值会根据程序需要被修改;

call:将当前CS:EIP的值压入栈顶,CS:EIP指向被调用函数的入口地址。

ret:从栈顶弹出原来保存CS:EIP的值,放入CS:EIP中;

内嵌汇编

关键字

asm:是GCC关键字asm的宏定义,是内嵌汇编的关键字。_asm_和asm可以互相替换使用,#define asm asm;

volatile:是GCC关键字volatile的宏定义,编译器不要优化代码,汇编指令保持原样。_asm_和asm可以互相替换使用,#define volatile volatile;

语法

asm volatile

汇编语言模板:

输出部分:

输入部分:

破坏描述部分

实验

patch -pl < ../mykernel_for_linux3.9.4sc.patch4

qemu -kernel arch/x86/boot/bzImage

搭建实验平台后内核启动效果

猜你喜欢

转载自www.cnblogs.com/waxxx/p/11610272.html