首页 > 其他分享 >CPU的实模式

CPU的实模式

时间:2022-12-25 11:12:39浏览次数:41  
标签:操作数 寻址 模式 地址 指令 寄存器 CPU

实模式是指CPU的寻址方式,寄存器大小,指令用法等,是用来反应CPU在该环境下如何工作的概念。

CPU的工作原理:CPU大体分为三个部分,控制、运算、存储单元。

控制单元是CPU的控制中心,大致由指令寄存器IR、指令译码器ID、操作控制器OC组成。程序被加载到内存后,指令指针寄存器IP指向内存中下一条待执行指令的地址,控制单元根据IP寄存器的指向,将位于内存中的指令逐个装载到指令寄存器中,指令译码器将位于指令寄存器中的指令按照指令格式解码,分析出操作码是什么,操作数在哪里之类的。

存储单元是指CPU内部的L1、L2缓存及寄存器,待处理的数据就存放在这些存储单元中,这里的数据是说指令中的操作数。

运算单元负责算术运算(加减乘除)和逻辑运算(比较,移位),它从控制单元那里接收命令(信号)并执行,它没有自主意识,只是个执行部件。

总结下CPU的工作原理:控制单元要取下一条待运行的指令,该指令的地址在程序计数器PC中,在 x86CPU上,程序计数器就是cs:ip。于是读取ip 寄存器后,将此地址送上地址总线,CPU根据此地址便得到了指令,并将其存入到指令寄存器IR中。这时候轮到指令译码器上场了,它根据指令格式检查指令寄存器中的指令,先确定操作码是什么,再检查操作数类型,若是在内存中,就将相应操作数从内存中取回放入自己的存储单元,若操作数是在寄存器中就直接用了,免了取操作数这一过程。操作码有了, 操作数也齐了,操作控制器给运算单元下令,开工,于是运算单元便真正开始执行指令了。ip寄存器的值被加上当前指令的大小,于是 ip 又指向了下一条指令的地址。接着控制单元又要取下一条指令了,流程回到了本段开头,CPU便开始了日复一日的循环,由于CPU特别不容易坏,所以唯一它停下来的条件就是停电。

实模式下CPU的内存寻址方式:寄存器寻址,立即数寻址,内存寻址。

寄存器寻址是最直接的寻址方式,直接从寄存器中拿数据即可。

立即数寻址是指操作数存在指令中,直接拿过来就能用,免去了找数的过程。

内存寻址又分为直接寻址(将操作数中的数字作为内存地址,取地址中的值为操作数),基址寻址(在操作数中用bx寄存器或寄存器作为地址的起始,地址的变化以它为基础),变址寻址(与基址寻址类似,只是寄存器变为si,di),基址变址寻址(基址寻址与变址寻址的结合)。

实模式下的ret

call,ret,jmp的原理都是修改寄存器CS,IP的值,将CPU导向新的位置。

ret的功能是在栈顶(ss:sp所指向的地址)弹出2字节内容来替换IP寄存器,还要维护栈顶指针,sp+2。

retf是从栈顶取4字节内容,栈顶2字节来替换IP寄存器,另外2字节替换CS寄存器,sp+4。

实模式下的call

call指令调用函数有四种方式:

16位实模式相对近调用:call所调用目标函数与当前代码段是同一个段,只给出偏移地址即可。给出目标函数的相对地址即可。

16位实模式间接绝对近调用:目标函数的地址没有直接给出,地址在寄存器或内存中的,不以立即数的形式出现。绝对是指目标函数的地址是绝对地址。

16位实模式直接绝对远调用:操作数以立即数形式给出。目标函数和当前地址不在同一段。

16位实模式间接绝对远调用:段基址和段内偏移地址在内存或寄存器中,但一个寄存器存不下,只支持内存寻址。

 实模式下的jmp:

jmp与call的区别在于jmp只要更新CS:IP的值,不需要保存他们的值,跳到新地址后无法返回。一共五类转移方式。

16位实模式相对短转移:相对说明操作数是个相对增量,短指明操作数大小满足-128~127的范围。

16位实模式相对近转移:与短转移相比操作数范围增大了,由8位变为16位。

16位实模式间接绝对近转移:将立即数地址存在寄存器或内存中,不跨段。

16位实模式直接绝对远转移:跨段的需求。

16位实模式间接绝对远转移:操作数放内存中。

有条件转移:根据上一条指令对标志寄存器中标志位的影响,根据不同的影响有不同的转移指令决定是否转移。

 

标签:操作数,寻址,模式,地址,指令,寄存器,CPU
From: https://www.cnblogs.com/LCAB/p/17000304.html

相关文章

  • 1个月连载30个设计模式真实案例,挑战年薪60W不是梦
    本文所有内容均节选自《设计模式就该这样学》本文自2021年10月29日起持续连载,请大家持续关注....序言DesignPatterns:ElementsofReusableObject-OrientedSoft......
  • 设计模式面试题(总结最全面的面试题!!!)
    Java面试总结汇总,整理了包括Java重点知识,以及常用开源框架,欢迎大家阅读。文章可能有错误的地方,因为个人知识有限,欢迎各位大佬指出!文章持续更新中......ID标题地址......
  • 第一百一十七篇: JavaScript 工厂模式和原型模式
    好家伙,本篇为《JS高级程序设计》第八章“对象、类与面向对象编程”学习笔记 1.工厂模式工厂模式是另外一种关注对象创建概念的创建模式。它的领域中同其它模式的不同......
  • 分组加密——多组加密模式
    分组加密——多组加密模式电子密码本EBCECB模式是将明文分成固定长度的组块,然后对每个明文分组块使用相同的密钥进行独立加密或解密,且该加密的结果将直接作为密文分组。......
  • 模版方法模式(一)
    对数据库的操作一般包括连接、打开、使用、关闭等步骤,在数据库操作模板类中我们定义了connDB()、openDB()、useDB()、closeDB()四个方法分别对应这四个步骤。对于不同类型......
  • 模版方法模式(二)
    #include<iostream>usingnamespacestd;classDBOperator{public:virtualvoidconnDB()=0;voidopenDB(){cout<<"打开数据库"<<endl;}......
  • 访问者模式(一)
    在我们课堂上的“购物车”的例子中,增加一个新的访问者:打包员,负责对购物车中货物装包。 //Product.javapackagetest25;publicinterfaceProduct{voidaccept(......
  • 访问者模式(二)
    #include<iostream>#include<list>usingnamespacestd;classApple;classBook;//抽象访问者classVisitor{protected:stringname;public:voidset......
  • 中介者模式(二)
    #include<iostream>#include<map>#include<ctime>#include<sstream>usingnamespacestd;classAbstractChatroom;//抽象同事类classMember{protected:Ab......
  • rsync的三种传输模式及常见报错
    rsync的传输的三种模式:1,本地传输模式(类似于cp,不支持推送和拉取,只是单纯的复制)2,远程传输模式(类似于scp,又不同于scp),scp只支持全量备份,rsync支持增量备份和差异备份3......