Linux内核分析第一次学习报告
学生 黎静
学习内容
1.存储程序计算机工作模型
冯诺依曼体系结构:核心思想为存储程序计算机。 CPU抽象为for循环,总是执行下一条指令,内存保存指令和数据,CPU来解释和执行这些指令。
API:应用程序编程接口(程序员与计算机的接口界面)
ABI:二进制接口,指令编码(程序员与CPU的接口界面)
2.X86汇编
1.寄存器
(1)通用寄存器
(2)段寄存器:
(3)标志寄存器
2.计算机的汇编指令
(1)movl指令:
寄存器寻址,寄存器模式,以%开头的寄存器标示符。不和内存打交道,eax赋值给edx;
立即寻址,把立即数直接放在寄存器,立即数是以$开头的数值;
直接寻址,直接访问一个指定的内存地址的数据;
间接寻址:将寄存器的值作为一个内存地址来访问内存;
变址寻址:在间接寻址之时改变寄存器的数值。
(2)其他指令 堆栈是向下增长的,有一个基址ebp指向堆栈栈底
pushl 压栈,esp减4,把eax放入esp内存位置
popl 出栈,从堆栈栈顶取32位放到寄存器eax里面,有两个动作:首先间接寻址,把栈顶数值放到eax里面,再把栈顶加4。
call 函数调用,把当前的eip压栈,给eip赋新值;
注意:*是指这些指令是伪指令,程序员不能直接修改这些,即eip寄存器不能被直接修改,只能通过特殊指令间接修改。
实验报告 反汇编一个简单的C程序
汇编代码
实验分析
学习总结体会
按照冯诺依曼原理的话计算机就是存储和程序。在老师的讲解中说,计算机就是一个简单的东西。指令序列就为程序,这些指令和数据等预先存储在内存中,工作时,CPU从内存中取出指令,从存储器中取出数据进 行指定的运算和逻辑操作等加工,再按地址把结果送到内存中去。再取出下一条指令完成相应操作,直至完成停止。上学期已经学过Linux初级知识。老师的网课内容清楚也简短,很适合学习。以后会有更好的学习。
参考资料《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000