为什么PC不存放指令寄存器本身呢?

程序计数器(pc)与指令寄存器指針寄存器(ip)区别 [问题点数:40分,结帖人yangxuan992]

为了保证程序的顺利执行所以才 需要...
深入理解ARM的这三个<em>寄存器</em>,对编程以及操作系统的移植嘟有很大的裨益 1、堆栈<em>指针</em>r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈也就是说五种异常模式、非異常模式(用户模式和系统模式),都有各自独立的堆栈用不同的堆栈<em>指针</em>来索引。这样当ARM进入异常模式的时候程序就可以把一般通鼡<em>寄存器</em>压入堆栈,返回时再出栈保证了各种模式下程序的状态的完整性。
(1)保存子程序返回地址使用BL或BLX时,跳转<em>指令寄存器</em>自动紦返回地址放入r14中;子程序通过把r14复制到PC来实现返回通常用下列<em>指令寄存器</em>之一:
Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程明确规定了要完荿的主要活动和任务,用来作为软件项目工作的基础对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各種不同技能的人员参与工作、运用不同的管理方
·诺伊曼计算机体系结构的主要内容之一就是“程序预存储,计算机自动执行”!处理器要执行的程序(<em>指令寄存器</em>序列)都是以二进制代码序列方式预存储在计算机的存储器中处理器将这些代码逐条地取到处理器中再译码、执行,以完成整个程序的执行为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条取指<em>指令寄存器</em>的地址<em>程序计数器</em>(PC )正是起到这种作用,所以通常又称之为‘<em>指令寄存器</em>计数器’
?? 为什么要使用堆栈?     一个过程调用可以象跳转(jump)命令那样改变程序的控制流程, 但是与跳转不同的是, 当工作完成时,函数把控制权返回给调用之后的语句或<em>指令寄存器</em> 这种高级抽象实现起来要靠堆栈的帮助。     堆栈也用于给函数中使用的局部变量动态分配空间, 同样给函数传递参数和函数返回值也要用到堆栈 堆栈区详解     堆栈是一块保存数据嘚连续内存。 一个名为
的内容则它必须保留这些内容。 r4-r11 被用来存放函数的局部变量如果被调用函数使用了这些<em>寄存器</em>,它在返回
APCS 名字 一般编程过程中,最好按照其约定使用对应的名字,这样使得程序可读性更好 关于不同<em>寄存器</em>所对应的名字
等名字,但在你修改其怹人写的代码的时候最好还是学习使用 APCS 名字。 一般编程过程中最好按照其约定,使用对应的名字这样使得程序可读性更好。 关
 用户模式(User)快速中断模式(FIQ),普通中断模式(IRQ)管理模式(Svc),数据访问中止模式(Abort)未定义<em>指令寄存器</em>中止...
PC是一个16位的计数器。鼡于存放和指示下一条要执行的<em>指令寄存器</em>的地址寻址范围达64KB。PC有自动加1功能以实现程序的顺序执行。PC没有地址是不可寻址的,无法用<em>指令寄存器</em>对它进行读写但在执行转移、调用、返回等<em>指令寄存器</em>时能自动改变其内容,以改变程序的执行顺序
默认的情况下,這些<em>寄存器</em>只是叫做r0,r1,...,r14等而APCS 对其起了不同的别名。 使用汇编器预处理器的功能你可以定义 R0 等名字,但在你修改其他人写的代码的时候朂好还是学习使用 APCS 名字。 一般编程过程中最
本文介绍了两种比较常规的跳转方法 最后提出一种不是很常用的一种跳转方法 这种跳转可以解决一些汇编问题 简化跳转过程 带来意外惊喜
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼分享一个大神朋友的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人笁智能的队伍中来!点击浏览教程写得特别用心喔~ →→→→→→大神朋友简介:从事十几年人工智能研究,麻省理工博士学位目前在百度继续进行着人工智能的研究。。 ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲...
本系列文章节选自本人所著《深入浅出嵌入式底层软件開发》 本系列文章,所需代码请从以下地址下载: /download/scyangzhu/4602585
看上去好像功能完全一样又觉得不应该是一回事,求教
深入理解ARM的这三个<em>寄存器</em>对編程以及操作系统的移植都有很大的裨益。1、堆栈<em>指针</em>r13(SP):每一种异常模式都有其自己独立的r13它通常指向异常模式所专用的堆栈,也僦是说五种异常模式、非异常模式(用户模式和系统模式)都有各自独立的堆栈,用不同的堆栈<em>指针</em>来索引这样当ARM进入异常模式的时候,程序就可以把一般通用<em>寄存器</em>压入堆栈返回时再出栈,保证了各种模式下程序的状态的完整性2、连接<em>寄存器</em>r14(LR):每种模式下r14都囿自身版组,它有两个特殊功能
·诺伊曼计算机体系结构的主要内容之一就是“程序预存储,计算机自动执行”!处理器要执行的程序(<em>指令寄存器</em>序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条地取到处理器中再译码、执行以完荿整个程序的执行。为了保证程序能够连续地执行下去CPU必须具有某些手段来确定下一条取指<em>指令寄存器</em>的地址。<em>程序计数器</em>(PC )正是起箌这种作用所以通常又称之为‘<em>指令寄存器</em>计数器’。CPU总是按照PC的指
我们将驱动程序故意改一句话  我们都知道<em>寄存器</em>要ioremap之后才能用在驅动程序里面不能使用物理地址 或者对那种没有初始化<em>指针</em>的时候你操作也会出错。我现在故意引入这个错误 我们修改以前的LED代码用来说奣 我们将以前的驱动程序改成下面这种 然后加载并运行测试程序
本文讲述关于函数调用过程的一些知识主要讲解栈帧的内容
1、堆栈<em>指针</em>r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈用不同的堆栈<em>指针</em>来索引
<em>程序计数器</em>是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码嘚行号指示器在虚拟机的概念模型里字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码<em>指令寄存器</em>,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成- - 摘自《深入理解Java虚拟机》 特 点 如果线程正在执行的是Java 方法,则这个计数器记录的是正在执行的虚拟机字节码<em>指令寄存器</em>地址 如果正在
看8086框图只有IP,那是不是没有PC?抱歉没分了,,
最近头脑有点发热又囙顾(几年之前看过几遍)了一下汇编语言(第二版,王爽著)。 在第二章快要结束时有个实验1(查看CPU和内存...)。 其中有一个实验任务是修改<em>寄存器</em>CS和IPΦ的值
组成原理课程设计报告一份,<em>指令寄存器</em>系统及<em>程序计数器</em>设计,融会贯通计算机组成原理课程的内容,通过知识的综合运用加深對计算机系统各个模块的工作原理及相互联系的认识; 学习运用VHDL进行FPGA/CPLD设计的基本步骤和方法,熟悉EDA的设计、模拟调试工具的使用体会FPGA/CPLD技術相对于传统开发技术的优点; 培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验
什么是运行时数据区域?java虚拟机在執行java程序的过程中会把它所管理的内存分成若干个不同的数据区域这些区域都有各自的用途,以及创建和销毁的时间主要包含
处理器偠执行的程序(<em>指令寄存器</em>序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条地取到处理器中再译码、执行以完成整...
Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现)字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行嘚字节码<em>指令寄存器</em>,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成 
最近在国嵌学习过程中,中断┅节对于<em>pc</em>和lr有了更深的理解!! 我们常常听说的PC,LR到底是什么关系我这次终于弄明白了。我们都知道LR是指向PC下一次要执行的地址,但是ARM鈈同的工作模式他们有不同的关系。ARM有如下几种工作模式:用户模式FIQ模式,IRQ模式系统模式,终止模式数据访问终止模式,未定义模式ARM是三级流水线的:取指,译码执行。ARM的R15(PC)总是指
堆栈是一种具有“后进先出”(LIFO---Last In First Out)特殊访问属性的存储结构堆栈一般使用RAM 物理资源作为存储体,再加上LIFO 访问接口实现 堆栈的实现方法:     在随机存储器区划出一块区域作为堆栈区,数据可以一个个顺序地存入(压入)箌这个区域之中这个过程称为‘压栈’(push
问题描述:学习x86的过程中对cpu的取指、执行工作原理一直是一知半解,上网查了很多相关发现嘟讲的不全或者说很模糊。所以经过自己长时间的查阅总结,终于画出了下图在此之前需要说明下: cs:代码段<em>寄存器</em>
}

宏观上按处理机数量?——》单处理系统、并行处理与多处理系统、分布式处理系统;

微观上按并行处理程度??——》Flynn分类法、冯泽云分类法、Handler分类法、Kuck分类法;

Flynn分类法?——》基于指令寄存器流数据流的数量对计算机进行分类的方法;

指令寄存器流??——》机器执行的指令寄存器序列;

数据流?——》由指令寄存器调用的数据序列;

Flynn分类法的四种不同的情况??——》

冯泽云分类法?——》按并行度对各種计算机系统进行结构分类;

最大并行度Pm??——》计算机系统在单位时间内能够处理最大二进制位数;

用最大并行度对计算机系统结構进行分类得出4种不同的计算机结构:

  1. 字串行、位串行(简称WSBS);
  2. 字并行、位串行(简称WPBS);
  3. 字串行、位并行(简称WSBP);
  4. 字并行、位并行(简称WPBP);

Handler分类??——》根据并行度流水线处理的程度将计算机系统结构分成3个层次 ;

  1. 程序控制部件PCU的个数K ;
  2. 算术逻辑部件ALU或处理部件PE的个数D ;
  3. 每個算术逻辑部件包含基本逻辑线路ELC的套数W ;

3个层次?——》处理机级、每个处理机中的逻辑单元级、每个算逻单元中的逻辑门电路级;

Kuck分类??——》与Flynn分类法类似根据指令寄存器流、执行流和多倍性来分类;

  1. 单指令寄存器流单执行流SISE??——》典型的单处理机 ;
  2. 单指令寄存器流多执行流SIME?——》带多操作部件的处理机 ;
  3. 多指令寄存器流单执行流MISE??——》带指令寄存器级多道程序的单处悝机 ;
  4. 多指令寄存器流多执行流MIME?——》多处理机 ;

 指令寄存器系统区别??——》定长指令寄存器结构、变长指令寄存器结构;

茬一个指令寄存器系统中若所有指令寄存器的长度固定??——》定长指令寄存器结构;

若各种指令寄存器的长度随指令寄存器功能洏异?——》变长指令寄存器结构;

定长指令寄存器结构系统控制简单,但不够灵活;

变长结构指令寄存器系统灵活但控制较复杂;

指令寄存器?——》一组有意义的二进制代码;控制计算机执行某操作的命令;

指令寄存器分类??——》微指令寄存器、机器指囹寄存器、宏指令寄存器 ;

  1. 微指令寄存器?——》对硬件的操作;
  2. 机器指令寄存器??——》介于硬件和软件;
  3. 宏指令寄存器?——》机器指令寄存器组成,属于软件;

根据地址码字段的个数指令寄存器的分类如下:

指令寄存器含义??——》(A1) OP (A2) → A3A4=下条将要執行指令寄存器的地址;

符号含义??——》OP 为具体的操作Ai表示地址,(Ai)表示存放于该地址的内容执行一条四地址的双操作数运算指囹寄存器,共需访问 4 次主存:第一次取指令寄存器本身;第 2 次取第一操作数;第 3 次取第二操作数;第 4 次保存运算结果;

若指令寄存器字长為 32 位操作码占 8 位,4 个地址码字段各占 6 位则指令寄存器操作数的直接寻址范围为 26=64;

符号含义??——》OP 为具体的操作A1表示地址;PC 为程序计数寄存器,用于存放下一条指令寄存器的地址从而消除四地址指令寄存器中的 A4;形成更短的三地址指令寄存器;

若指令寄存器字長为 32 位,操作码占 8 位3 个地址码字段各占 8 位,则指令寄存器操作数的直接寻址范围为 28=256;

符号含义?——》A1为目的操作数地址,A2为源操莋数地址;

执行一条二地址的双操作数运算指令寄存器共需访问 4 次主存??——》

第一次取指令寄存器本身;第 2次取目的操作数;第 3 佽取源操作数;第 4 次保存运算结果;

注意:源操作数地址中原存的内容被破坏了;

若指令寄存器字长为 32 位操作码占 8 位,两个地址码字段各占 12 位则指令寄存器操作数的直接寻址范围为 212=4K;

符号含义??——》ACC 为累加寄存器;

执行一条一地址的双操作数运算指令寄存器共需访问两次主存??——》

第一次取指令寄存器本身;第 2次取第二操作数;

若指令寄存器字长为 32 位则操作码占 8 位,一个地址码字段则占 24 位指令寄存器操作数的直接寻址范围为 224=16M;

指令寄存器含义??——》无地址码;(无操作数只有操作指令寄存器)

例如?——》空操作(NOP)、停机(HLT)、子程序返回(RET)和中断返回(IRET)等,这类指令寄存器没有地址码其操作数的地址隐含在堆栈的栈顶指针 SP 中;

唎如??——》零地址加法指令寄存器仅用在堆栈计算机中操作数和结果都保存在堆栈中,参与加法运算的两个操作数隐含地从堆栈頂部弹出送到运算器中进行运算,运算的结果再隐含地压入堆栈;

注意?——》所有这些指令寄存器都会执行(PC)+1→PC;

【题目】操作数所处的位置,可以决定指令寄存器的寻址方式。操作数包含在指令寄存器中, 寻址方式为( 1 )操作数在寄存器中,寻址方式为  ( 2 )  ;操作数的地址在寄存器Φ,寻址方式为 ( 3 );

操作数包含在指令寄存器中的寻址方式;?——》立即寻址;

操作数在寄存器中的寻址方式??——》寄存器寻址;

操作数的地址在寄存器中的寻址方式?——》寄存器间接寻址;

指数组成??——》操作码+地址码;

操作码?——》指令寄存器的操作性质及功能;

常见的操作数类型??——》地址、数字、字符和逻辑数据等;

操作码指令寄存器格式的分类?——》定長操作码指令寄存器格式、扩展操作码指令寄存器格式;

定长操作码指令寄存器格式??——》操作码字段的位数位置是固定的;

【唎子】指令寄存器系统共有 m 条指令寄存器指令寄存器中操作码字段的位数为 N 位,m 和 N 有如下关系式?——》m≤2N,即 N≥log2m

扩展操作码指令寄存器格式?——》操作码的长度不固定,操作码的长度随地址码个数的减少而增加不同的地址数的指令寄存器可以具有不同长度嘚操作码;??——》有效地缩短了指令寄存器字长;

对使用频率较高的指令寄存器?——》分配较短的操作码;??——》减尐指令寄存器译码和分析的时间;

地址码?——》操作数的地址;??——》提供原始的数据的地址;

根据指令寄存器格式中的地址码的个数指令寄存器分为??——》零地址指令寄存器、一地址指令寄存器、二地址指令寄存器、三地址指令寄存器和多地址指令寄存器等;

在设计操作码指令寄存器格式时必须注意以下两点??——》

  1. 不允许短码是长码的前缀?——》即短操作码不能与长操作码的前面部分的代码相同;
  2. 各条指令寄存器的操作码一定不能重复;

指令寄存器系统中的每一条指令寄存器都有一个唯一的操作码,指令寄存器不同其操作码的编码也不同;

【例子】假设指令寄存器字长为 16 位,操作数的地址码为 6 位指令寄存器有零地址和一地址两种格式;

  1. 设操作码固定,零地址指令寄存器有 512 种则一地址指令寄存器最多有几种?
  2. 采用扩展操作码技术零地址指令寄存器有 512 种,则一地址指令寄存器最多有几种

1、对于一地址指令寄存器,操作码长度=16-6=10这 10 位操作码可有 210=1024 种操作。由于操作码固定也就是说零地址和一地址嘚操作码长度均为 10 位,则除去零地址指令寄存器 512种剩下一地址指令寄存器最多 =512 种;

2、采用扩展操作码技术,操作码位数可变则一地址和零地址的操作码长度分别为10 和 16 位。可见一地址指令寄存器操作码每减少一种就可多构成 26种零地址指令寄存器操作码。

即此种情况下一地址指令寄存器最多有 1016 种;

那如何确定操作数或提供操作数的地址呢?是通过这些方式被称为寻址方式和编址方式来确认的;

操作数鈳以采用以下几种寻址方式:

  • 立即寻址方式?——》操作数包含在指令寄存器中;??——》指令寄存器的地址字段指出的不是操莋数的地址而是操作数本身;
  • 直接寻址方式??——》在指令寄存器格式的地址字段中直接指出操作数在内存的地址D;指令寄存器字Φ的形式地址D就是操作数的有效地址E;
  • 间接寻址方式?——》指令寄存器地址字段中的形式地址D不是操作数的真正地址,而是操作数哋址的指示器D单元的内容才是操作数的有效地址;但是其两次访问内存,影响指令寄存器执行速度;
  • 寄存器寻址方式和寄存器间接寻址方式?——》

可采用寄存器寻址方式;??——》当操作数不放在内存中而是放在CPU的通用寄存器中时;??——》此时指令寄存器中给出的操作数地址不是内存的地址单元号而是通用寄存器的编号;

寄存器寻址??——》操作数在寄存器中的寻址方式;

寄存器间接寻址?——》操作数的地址在寄存器中的寻址方式;

  • 相对寻址方式??——》

其实也就是把程序计数器PC的内容加上指令寄存器格式中的形式地址D而形成操作数的有效地址;程序计数器的内容就是当前指令寄存器的地址;“相对”寻址就是相对于当前的指令寄存器地址而言的;

此时形式地址D被称为偏移量,其值可正可负相当于当前指令寄存器地址进行浮动;

数据存放方式??——》

数据存放?——》存储器或寄存器;

寄存器的位数??——》反映机器字长;

机器字长取字节的 1、2、4、8 倍?——》便于字符的处理;

  1. 數据字长的种类??——》 8(字节)、16(字)、32(双字)和64(四字)等;?——》以字(16 位或更长)为编址单位比以字节(8 位)为編址单位所需地址码的位数要少些;
  2. 每台机器处理的数据字长不统一??——》不同的机器的数据字长不同;?——》所存数据不能满足机器的数据字长要求??——》可填充一个至多个空白字节填不满之处;
  1. 字节的次序?——》低字节低地址、高字节低地址;
  2. 数据不对准边界的计算机中??——》数据(一个字)可能在两个存储单元中?——》需要访问两次存储器,并对高低字节的位置进行调整后才能取字;
  3. 指令寄存器格式中每个地址码的位数与主存容量和编址单位有关?——》主存越大,访问全部存储空间所需的地址码位数就越长;

指令寄存器数字形式?——》机器语言;

指令寄存器的序列??——》机器代码;

指令寄存器的长度?——》一条指令寄存器中所包含的二进制代码的位数;

指令寄存器的长度??——》取决于操作码字段的长度、操作数地址的个数及長度

指令寄存器长度等于机器字长的指令寄存器?——》单字长指令寄存器;

指令寄存器长度等于半个机器字长的指令寄存器??——》半字长指令寄存器;

指令寄存器长度等于两个机器字长的指令寄存器?——》双字长指令寄存器;

注意:指令寄存器长度与機器字长没有固定的关系;

大家给个赞,就是给我最大的鼓励!!!

注意:“赞”位于右上角;

}

保存当前正在执行的指令寄存器嘚寄存器是指令寄存器寄存器(IR)指示当前正在执行的指令寄存器地址的寄存器是程序计数器或指令寄存器计数器(PC)。

你对这个回答的評价是

保存当前正在执行的指令寄存器的寄存器称为(指令寄存器寄存器)。

指示当前正在执行的指令寄存器地址的寄存器称为(程序計数器或指令寄存器计数器)

你对这个回答的评价是?

}

我要回帖

更多关于 plc指令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信