一、实验一内容及分析

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。

最新文章

  1. Oracle trunc()函数的用法
  2. Apache 打开网页的时候等待时间过长的解决方案
  3. HTTP Client工具类
  4. 原子操作--ARM架构
  5. VS2012下配置OpenCV2.4.5
  6. javascript引擎工作原理
  7. Oracle存储过程单步调试方法
  8. hdu 4714 树形DP
  9. [改善Java代码]易变业务使用脚本语言编写
  10. 使用ServiceStackRedis链接Redis简介
  11. NetBeans使用技巧记录
  12. linux管理员
  13. Selenium WebDriver多层表单切换
  14. javascript如何创建一个换行节点
  15. python基础教程(十)
  16. Linux学习(十三)du、df、fdisk磁盘分区
  17. centos6.7 配置外网端口映射
  18. 原生JS实现随着鼠标滚动到元素位置触发对应css3动画,简单易用滚动监测
  19. u-boot移植(五)---代码修改---时钟修改、SDRAM
  20. Java如何替换所有指定(出现)的字符串?

热门文章

  1. SpringBoot-03-配置之yaml语法学习
  2. session安全&&CBC字符反转攻击&&hash拓展攻击
  3. 码云+Git配置仓库
  4. WPF启动流程-自己手写Main函数
  5. Tengine更新安装
  6. 一次性升级所有python包的靠谱并且简单的方法
  7. SpringBoot中pom引入gson异常
  8. selenium3介绍
  9. Blend学习之Loading加载动画
  10. Arduino 串行外设接口——W3Cschool