操作系统是如何工作的
计算机的三大法宝:
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
搭建实验平台后内核启动效果