朱荟潼 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课http://mooc.study.163.com/course/USTC-1000029000

1.冯诺依曼体系结构

---核心:存储程序计算机
计算机在执行程序时须先将要执行的相关程序和数据放入内存储器中,在执行程序时CPU根据当前程序指针寄存器的内容取出指令并执行指令,然后再取出下一条指令并执行,如此循环下去直到程序结束指令时才停止执行。其工作过程就是不断地取指令和执行指令的过程,最后将计算的结果放入指令指定的存储器地址中。

2.X86汇编基础

(1)通用寄存器(32位)

EAX:累加寄存器,常用于运算;

EBX:基址寄存器,常用于地址索引;

ECX:计数寄存器,常用于计数;

EDX:数据寄存器,常用于数据传递;

ESP:堆栈指针,与SS配合使用,可指向目前的堆栈位置;

EBP:基址指针寄存器,可用作SS的一个相对基址位置;

ESI:源变址寄存器,可用来存放相对于DS段之源变址指针;

EDI:目的变址寄存器,可用来存放相对于ES 段之目的变址指针。

(2) 段寄存器

CS:代码段寄存器(存有代码)
DS:数据段寄存器
SS:堆栈段寄存器
ES:附加段寄存器

(3) eip特点:

a.自加1条指令。 从该指令执行完自动指向下一条指令。

b.只可被一下指令修改:call,ret,jmp,条件跳转

(4)cpu在实际取指令是根据 cs:eip 来定位一条指令.

(5)堆栈是向下增长的。

3.X86汇编指令

(1)寻址方式

(2)Push,pop,ret,enter,leave

(3)Eax 寄存器

函数返回值默认用它存储,返回给上一级函数

(4)函数调用堆栈是由逻辑上多个堆栈叠加起来的

4.实验

(1)创建5337.c并查看

(2)编译

(3)修改成汇编语言

把.XXX删去即可

(4)栈的变化分析

针对实验中的分析(主函数main,俩子函数分别是g,f):

(ps:分析栈的变化时,笔的颜色分别代表一个函数)

函数之间(子函数改名:a,b):

学习总结

上学期学习过相关内容,所以这次课程的开始相对比较容易,同时对于这学期的学习内容也会努力学习,知识内容的掌握更加深刻。

朱荟潼+原创作品转载请注明出处+ 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

20135337朱荟潼 Linux第一周学习总结——计算机是如何工作的的更多相关文章

  1. 20135337朱荟潼 Linux第二周学习总结——操作系统是如何工作的

    一.计算机是如何工作的--总结 三个法宝 存储程序计算机.函数调用堆栈.中断机制 二.堆栈 1.是c语言程序运行时必须的一个记录调用路径和参数的空间. 函数调用框架.传递参数.保存返回地址.提供局部变 ...

  2. Linux第一周学习总结——计算机是如何工作的

    第一周学习总结--计算机是如何工作的 作者:刘浩晨 一.存储程序计算机工作模型 冯诺依曼体系结构:核心思想为存储程序计算机.两个层面: (1)硬件的角度(计算机主板):一个CPU,一块内存,之间有总线 ...

  3. 20135337朱荟潼 Linux第四周学习总结——扒开系统调用的三层皮(上)

    朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课http://mooc.study.163.com/course/USTC 1000029000 知识点梳理 一.用 ...

  4. LINUX内核分析第一周学习总结——计算机是如何工作的

    LINUX内核分析第一周学习总结——计算机是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/ ...

  5. 20135337朱荟潼 Linux第六周学习总结——进程的描述和进程的创建

    朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课http://mooc.study.163.com/course/USTC 1000029000 第六周 进程的描述 ...

  6. 20135337朱荟潼 Linux第七周学习总结——可执行程序的装载

    朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第七周 Linu ...

  7. 20135337朱荟潼 Linux第五周学习总结——扒开系统调用的三层皮(下)

    朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课http://mooc.study.163.com/course/USTC 1000029000 一.学习内容 (一 ...

  8. 20135337朱荟潼 Linux第三周学习总结 ——Linux内核源代码简介

    朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课http://mooc.study.163.com/course/USTC 1000029000 知识笔记 1.ar ...

  9. 《Linux内核分析》第一周学习小结 计算机是如何工作的?

    <Linux内核分析>第一周.计算机是如何工作的? 20135204 郝智宇  一.存储程序计算机工作模型 1.      冯诺依曼体系结构: 数字计算机的数制采用二进制:计算机应该按照程 ...

随机推荐

  1. 【Alpha 冲刺】 1/12

    1. 任务明细及任务量 Alpha版本任务安排(非固化版本,视情况调整,若有遗漏,及时补充) 职务 姓名 预期负责的模块页面 模块页面/任务明细 难度系数(0~1)(根据UI/功能实现难度划分) 预计 ...

  2. 【Ansible 文档】【译文】Windows 支持

    see also:List of Windows Modules Windows Support Windows 支持 Windows: How Does It Work Windows:如何工作 正 ...

  3. loli的搜索测试-5

    今天早上听说不放假感觉很sad,又听说要考试感觉更sad了,早读的时候Juan_feng表示即使考也不会考虫食算,结果上午并没有考试,就自己做了几道题.不得不说做题的决定实在是太明智了,做NOIP历年 ...

  4. 使用docker-compose快速构建wordpress

    前提必须是在docker的环境下,关于docker的安装可以参考(考虑目前国内使用ubuntu和centos的比较多,所以就列出这两个): Ubuntu16.04安装docker centos7之do ...

  5. leetcode349—Intersection of Two Arrays

    Given two arrays, write a function to compute their intersection. Example 1: Input: nums1 = [1,2,2,1 ...

  6. 【Git】删除某个全局配置项

    1.查看Git所有配置 git config --list 2.删除全局配置项 (1)终端执行命令: git config --global --unset user.name (2)编辑配置文件: ...

  7. Oracle 表删除操作

    删除表内容(dml):delete from 删除表结构(ddl):drop table xx 清空表(ddl):truncate table 清空整张表,不能回滚,不会产生大量日志文件: 表空间会得 ...

  8. php实现远程网络文件下载到服务器指定目录(方法二)

    <?php // maximum execution time in seconds set_time_limit (24 * 60 * 60); //if (!isset($_POST['su ...

  9. python_基础硬件知识

    通过学习这一篇章的内容,回顾了<数字逻辑><计算机组成原理><操作系统> 这几门课的相关知识 有时候,总是要了解一些基本,才能更容易理解程序 以下是我的一些听课记录 ...

  10. Mac 如何显示隐藏文件夹并设置快捷键

    通过在终端运行命令可以控制隐藏文件是否显示: 输入defaults write com.apple.finder AppleShowAllFiles NO 就不显示, 输入defaults write ...