2020-2021-1 20209306 《linux内核原理与分析》第二周作业

一、实验一内容及分析

1.实验一内容过程截图

2.实验一完成后收获

可以看到汇编代码中出现了eax、esp、ebp。eax是累加寄存器,esp是堆栈指针寄存器,ebp是基指针寄存器。汇编代码中用到了movl指令和pushl指令,
其中movl %esp %ebp是把寄存器%esp中的内容放到%ebp中。相当于C语言代码的ebp = esp
另外pushl %ebp就是把ebp寄存器的值压倒堆栈栈顶。这就与上面的代码组成了保存和恢复的过程。

二、学习linux《庖丁解牛》第一章“计算机工作原理”遇到的问题和学习收获

1.没有正确理解“值”的含义:

pushl指令包含两个动作,其中第一步将寄存器的值减4,学习中没有正确理解值减4的含义,经过学习和同学的指导后,得知“值”和“字节”关系,1值是8字节,pushl指令是将寄存器值压倒堆栈栈顶,因此在32位中值应减4.

2.没有正确理解间接寻址的含义:

在寄存器上加一个小括号,例如将%esp变为(%esp),加括号指将其表示为其所指向的内存地址,若放在movl指令后的第一个代码,则表示将这个内存地址所存储的数据放到后面的寄存器中,若放在movl指令的后面的第二个代码,则表示把前面寄存器的值放到间接寻址寄存器所指向的地方。

3.学习到的新指令:movl、pushl、popl、call、ret。

原文地址:https://www.cnblogs.com/maobenhao/p/13830302.html