开发日记-20190503 关键词 汇编语言(二)
这两天肩膀真的痛的让我心痛,坐在那里看书都疼的让人受不了。今天主要是理论上的操作,估计明天要开始编码实战了。
参考书:汇编语言,基于x86处理器;
大致梗概
应用于x86(和Intel 64)处理器的计算机基本体系结构
基本boolean逻辑
x86管理内存
高级语言编译器如何将其语句转换为汇编语言和原生机器代码;高级语言如何在机器级实现算数表达式,循环和逻辑结构;有符号和无符号整数,实数和字符的数据表示。
CPU结构:
时针:对CPU内部操作与系统其他组件进行同步
控制单元:协调参与机器指令的步骤序列
算数逻辑单元:执行算数运算
总线:
数据总线:在CPU和内存间传输指令和数据
I/O总线:CPU和系统输入/输出设备之间传输数据
控制总线:用二进制信号对所有连接在系统总线上的设备的行为进行同步
地址总线:CPU和内存之间传输数据时,地址总线用于保存指令和数据的地址
内存储存单元(memory storage unit):用于在程序运行时保存指令的数据,它接受来自CPU的数据请求,将数据从随机存储器(RAM)传输到CPU,并从CPU传输到内存。
时钟,执行一条指令最少需要一个时钟周期,有的则超过50个(比如8088处理器中的乘法指令)
CPU,系统总线和内存电路之间存在速度差异,因此,需要访问内存的指令常常需要空时钟周期,也被称为等待状态。
指令执行周期:(instruction execution cycle)
CPU从被称为指令队列(instruction queue)的内存区域取得指令,并立即增加指令指针的值
CPU对指令的二进制位模式进行译码。这种位模式可能会表示该指令有操作数(输入值)
如果有操作数,CPU从寄存器和内存中取得操作数
使用步骤三得到的操作数,CPU执行该指令,同时更新部分状态标志位,如零标志,进位标志和溢出标志
如果输出操作数也是该指令的一部分,则CPU还需要存放其结果
====》》 可浓缩成三个步骤:1.获取指令地址 2.译码 3.执行
指令执行过程:
将指令地址放至地址总线上
从内存读取程序指令
内存控制器将所需代码送至高速缓存区(经由数据总线)(高速缓存区数据储存到底是按照)
指令指针的值决定下一条将要执行的指令
指令由指令译码器分析并产生相应的数据信号并送至控制单元,其协调ALU和浮点单元
内存读取:
将想要读取的值的地址放到地址总线上
设置处理器RD(读取)引脚(改变RD的值)
等待一个时钟周期给储存芯片进行相应
将数据从数据总线复制到目标操作数
加载并执行程序:在程序执行之前,需要将其加载至内存(通过一种工具程序:程序加载器),加载后,操作系统必须将CPU指令指向程序的入口,程序开始执行的地址
操作系统在当前磁盘目录下搜索程序的文件名
如果程序文件被找到,获取其文件信息
根据获取到的文件信息,OS确定内存中下一个可使用的位置,将程序文件加载到内存
OS开始执行程序的第一条机器指令。开始执行后,就称为一个进程(OS会为其分配PID)
进程自动运行,OS的工作是确保进程的执行,并响应系统资源的请求。(包括内存,磁盘文件,输入输出路径)
进程结束后,从内存中移除
开发日记-20190503 关键词 汇编语言(二)相关推荐
- 开发日记-20190513 关键词 汇编语言(六)
其实,每次当我写一篇开发日记,并且这篇开发日记并没有关键词,或者我并没有和你扯东扯西的情况下... 这意味着我这天偷懒了= = ;AddTwo.asm --两个32位整数相加.386.model fl ...
- 开发日记-20190915 关键词 汇编语言王爽版 第十二章
第十二章 内中断 任何一个通用的CPU,比如8086,都具备一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部传送过来或内部产生的一种特殊信息,并且可以立即对所接收的信息进行处理.这种特 ...
- 开发日记-20190515 关键词 汇编语言(八) MVVM
PART 杂谈 现在是晚上8点14分,刚刚下班,最近刚刚一个项目完成了,其实很多时候,我真的感觉我们的项目缺乏挑战性,所以现在很多时候我仅仅是把自己当成一个成长中的代码美容师比较贴切一些. 最近其实真 ...
- 开发日记-20190514 关键词 汇编语言(七)
常常有这种冲动,想花钱= =,但是总感觉充游戏这类的毒品性消费又太过于无趣了,因为我还是很喜欢物质的那种存在感,所以还是喜欢买书.最近发现一个很令人无语的事实,就是貌似我读书的速度大概是我买书的速度的 ...
- 开发日记-20190501 关键词 汇编语言(启动) 基于x86处理器
我不太喜欢我的大学生活,因为最后并没有按照我的想法继续发展下去,不过,事情都已经过去了,再去懊恼不是仅仅给自己徒增烦恼和给未来形成阻碍吗? 我仍记得大学有一门噩梦般的课程,为什么称之为噩梦,因为那时候 ...
- 开发日记-20190915 关键词 汇编语言王爽版 第十三章
第十二章 内中断 任何一个通用的CPU,比如8086,都具备一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部传送过来或内部产生的一种特殊信息,并且可以立即对所接收的信息进行处理.这种特 ...
- 开发日记-20190915 关键词 汇编语言王爽版 第十一章
第十一章 标志寄存器 CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理器,个数和结构都可能不同)具有以下三种作用. (1)用来存储相关的指令的某些执行结果 (2)用来为CPU执行相关的指令提供 ...
- 开发日记-20190915 关键词 汇编语言王爽版 第十章
第十章 CALL和RET指令 call 和ret指令都是转移指令,他们都修改IP,或同时修改CS和IP.他们经常被共同用来实现子程序的设计. 10.1 ret和retf ret指令用栈中的数据,修改I ...
- 开发日记-20190915 关键词 汇编语言王爽版 第九章
第九章 转移指令的原理 可以修改IP或同事修改CS和IP和指令统称为转移指令.概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令. 8086CPU的转移行为有以下几类: 只修改IP时,称为段 ...
最新文章
- 十年磨一剑!程序员老兵成新将
- iOS音频的后台播放 锁屏
- matlab raw函数,用matlab处理Raw格式的图像文件的方法
- [算法总结] 二分查找
- 《Linux内核分析》第一周笔记 计算机是如何工作的
- java j2ssh替代jsch,jsch设置ssh协商算法优先级
- Confluence 6 企业环境或者网站托管的 Java 配置策略
- sklearn_收入模型
- 一个大数据应用是如何炼成的?
- main()如果返回0,则代表程序正常退出,返回非零代表程序异常退出。
- redis 用scan 代替keys 解决百万数据模糊查询超时问题
- 电脑主板跳线_电脑主板跳线连接图
- android flag,Android 屏幕锁 - FLAG_KEEP_SCREEN_ON
- css中换行的几种方式
- 服务器创建文件失败是什么意思,网站提示无法创建文件错误解决详情(图文)...
- python真的好学吗?
- RabbitMQ 高级指南:从配置、使用到高可用集群搭建
- SSM综合复习之MyBatis
- echarts中的地图与Axure交互
- Intel® Xeon® Processor Scalable Family Technical Overview(转译)
热门文章
- webservice发送xml报文_海关总署公告2020年第120号(关于发布进出境公路运输工具货运舱单电子传输报文格式V1.1的公告)...
- Jmeter性能测试之随机控制器和随机顺序控制器的使用
- SBULL块设备驱动程序分析
- java handler使用方法_Android中Handler的使用方法及实例(基础回顾)
- mysql正则表达式配置,MySQL REGEXP:正则表达式
- php微信支付na,虚拟支付
- active server pages 错误 asp 0126_微信小程序全栈开发课程【视频版】2.1 小程序前端页面初始配置、ESlint格式错误...
- java读取文件路径中文,分分钟搞定!
- delphi oracle新建用户,Delphi 中如何用另外一个用户的身份来运行一人程序
- sql优化ppt_Spark优化 | Spark 3.0 中七个必须知道的 SQL 性能优化