20179223《Linux内核原理与分析》第二周学习笔记

时间:2023-11-10 10:16:08

第二周实验

本周学习情况:

学习了X86 cpu的几个寄存器及X86汇编指令:
movl %eax,%edx edx=eax %表示一个寄存器,把eax内容放入edx,等号相当于把eax赋值给edx,寄存器寻址;
movl $0x123,%edx edx=0x123 立即数是以$开头的数值,把16进制的数值放入edx,立即寻址;
movl 0x123,%edx edx=(int32_t)0x123 内存地址16进制的123内存放入edx,把0x123强制转化成32-bit的指针,表示取它的值,直接寻址;
movl (%ebx),%edx edx=
(int32_t)ebx ebx这个寄存器存的值加个括号表示内存地址,所存储的数据放入edx,间接寻址;
movl 4(%ebx),%edx edx=
(int32_t*)(ebx+4) 除了在间接寻址的基础上先给ebx地址上加个立即数ebx+4,变址寻址。

先打开一个shell控制台,并可以下载在自己的电脑上;

20179223《Linux内核原理与分析》第二周学习笔记

把代码输入其中,并保存;

20179223《Linux内核原理与分析》第二周学习笔记

进行编译代码,按照题目要求命令编译成汇编代码;

20179223《Linux内核原理与分析》第二周学习笔记

打开main.s,删除点开头的内容,留下纯汇编代码;

20179223《Linux内核原理与分析》第二周学习笔记

20179223《Linux内核原理与分析》第二周学习笔记

步骤演示:

20179223《Linux内核原理与分析》第二周学习笔记

20179223《Linux内核原理与分析》第二周学习笔记

遇到的问题及解决方案

在进行输入代码时,不知道怎么从代码输入界面跳回原来的界面,记得上课老师讲过但是忘了,然后看了视频再加上自己百度,终于把问题解决了,代码输好后,要先按Esc,变成normal状态,然后按:wq,这样就能回到原来的界面。