指令寄存器

操作系统原理(1)

為{幸葍}努か 提交于 2019-11-26 22:02:16
计算机体系结构 一个计算机系统由运算器、控制器、存储器(即内存)、输入设备、输出设备组成。其中运算器运算数据,而数据在内存中,运算器要通过控制器到内存中获取数据,运算器最后将运算后的结果通过控制器保存在内存中,通常程序由指令和数据组成,当程序运行时指令和数据保存在内存中,指令中有数据在内存中的地址信息,从而运算器知道数据在内存的位置,然后通过控制器获取所需的数据;一般来说IO设备是通过北桥或南桥芯片连入的,北桥成为高速总线控制器:内存和CPU通过北桥连接在一起。南桥称为低速总线控制器:外围设备和南桥连在一起,然后南桥和北桥相连; 对一个简单的PC机而言,在某一时刻只能运行一个程序,但PC计算能力很强一个程序运行的程序内容和占用的CPU时间不是特别长,因此为了能够尽可能利用计算机的资源,需要让PC具有同时运行多个程序的能力,因此每个程序在运行时需要一个协调器称为内核(内核是运行在硬件之上负责管理硬件资源并且将硬件资源虚拟成其他样子提供给上层所需的应用程序(这样做的原因是如果某一应用程序直接运行在硬件之上则此程序就可以控制硬件的各种属性,其它程序运行时可能彼此会产生干扰,一个恶意的程序可能导致其它程序统统退出所以就需要统一的资源管理者,而且每个程序要想使用硬件必须通过内核来完成,而内核也不会让程序直接访问硬件而是通过将硬件提供的计算能力通过一个个的称为系统调用(system call

ATPC 寄存器作用

时光怂恿深爱的人放手 提交于 2019-11-26 17:14:14
1. ATPC (Automatic Transfer Power Control) 自动 发信功率控制。技术的要点是微波发信机的输出功率在ATPC控制范围内自动跟踪接收段接收电平的变化而变化 2. 基本ATPCS规定了在子程序调用时的一些基本规则,包括下面3方面的内容: 1、寄存器的使用必须满足下面的规则: 1).子程序间通过 寄存器R0一R3来传递参数 ,这时,寄存器R0~R3可以记作A1-A4。被调用的子程序在返回前无需恢复寄存器R0~R3的内容。 2).在子程序中,使用寄存器R4~R11来保存局部变量.这时,寄存器 R4 ~ R11可以记作V1 ~ V8。如果在子程序中使用到了寄存器V1~V8中的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值;对于子程序中没有用到的寄存器则不必进行这些操作。在Thumb程序中,通常只能使用寄存器R4~R7来保存局部变量。 3).寄存器R12用作过程调用时的临时寄存器(用于保存SP,在函数返回时使用该寄存器出栈), 记作ip。在子程序间的连接代码段中常有这种使用规则。 4).寄存器R13用作数据栈指针,记作sp。在子程序中寄存器R13不能用作其他用途。寄存器sp在进入子程序时的值和退出子程序时的值必须相等。 5).寄存器R14称为连接寄存器,记作lr。它用于保存子程序的返回地址。如果在子程序中保存了返回地址

第三章 寄存器

牧云@^-^@ 提交于 2019-11-26 12:45:44
cpu提供的栈机制 1.8086CPU提供入栈和出栈指令,最基本的两个是PUSH(入栈)和POP(出栈)。比如,push ax表示将寄存器ax中的数据送入栈中,pop ax表示从栈顶取出数据送入ax。8086CPU的入栈和出栈操作都是 以字为单位 进行的。 2.CPU如何知道这段空间被当作栈来使用?如何知道那个单元是栈顶单元? 8086CPU中,有两个寄存器,段寄存器SS和寄存器SP,栈顶的段地址存放在SS中,偏移地址存放在SP中。任意时刻,SS:SP指向栈顶元素。push指令和pop指令执行时,CPU从SS和SP中得到栈顶的地址。 在执行push、pop指令需要两步操作:执行push时,CPU的两步操作是:先改变SP,后向SS:SP处传送;执行pop时,CPU的两步操作是:先读取SS:SP处的数据,后改变SP。 3.要小心栈顶超界的问题 来源: https://www.cnblogs.com/mylearning-log/p/11320621.html

计算机组成原理 - 一些简单题和设计分析题

此生再无相见时 提交于 2019-11-26 12:34:03
为了前几天的计算机组成原理的复习,从google上搜索的一些烟台大学历年考试试题进行的一些总结,现在分享给需要的朋友。 简答题 1. CPU中包括哪几种寄存器?分别说明其作用。 答:CPU有以下寄存器: (1)指令寄存器(IR):用来保存当前正在执行的一条指令。 (2)程序计数器(PC):用来确定下一条指令的地址。 (3)地址寄存器(AR):用来保存当前CPU所访问的内存单元的地址。 (4)缓冲寄存器(DR):<1>作为CPU和内存、外部设备之间信息传送的中转站。 <2>补偿CPU和内存、外围设备之间在操作速度上的差别。 <3>在单累加器结构的运算器中,缓冲寄存器还可兼作为操作数寄存器。 (5)通用寄存器(AC):当运算器的算术逻辑单元(ALU)执行全部算术和逻辑运算时,为ALU提供一个工作区。 (6)状态条件寄存器:保存由算术指令和逻辑指令运行或测试的结果建立的各种条 件码内容。除此之外,还保存中断和系统工作状态等信息,以便使CPU和系统能及时了解机器运行状态和程序运行状态。 2.根据操作数所在位置,指出其寻址方式(填空)。 (1)、操作数在寄存器中,为____ 寄存器 ____寻址方式。 (2)、操作数地址在寄存器中,为_ 寄存器间接 _寻址方式。 (3)、操作数地址(主存)在指令中,为___ 直接 ___寻址方式。 (4)、操作数在指令中,为__ 立即 ____寻址方式。

计算机组成原理复习题二

时光毁灭记忆、已成空白 提交于 2019-11-26 12:33:28
原文地址: https://wenku.baidu.com/view/935be3d1c1c708a1284a4446 一、选择题 1、在间址周期中,_C_____。 A.所有指令的间址操作都是相同的; B.凡是存储器间接寻址的指令,它们的操作都是相同的; C.对于存储器间接寻址或寄存器间接寻址的指令,它们的操作是不同的; D.以上都不对。 2、将有关数据加以分类、统计、分析,以取得有利用价值的信息,我们称其为_C_____。 A. 数值计算 B. 辅助设计 C. 数据处理 D. 实时控制 3、定点16位字长的字,采用2的补码形式表示时,一个字所能表示的整数范围是____A_。 A.-215 ~ +(215 -1) B.-(215 –1)~ +(215 –1) C.-(215 + 1)~ +215 D.-215 ~ +215 4、根据传送信息的种类不同,系统总线分为___B___。 A. 地址线和数据线 B. 地址线、数据线和控制线 C. 地址线、数据线和响应线 D. 数据线和控制线 5、外存储器与内存储器相比,外存储器__B____。 A.速度快,容量大,成本高 B.速度慢,容量大,成本低 C.速度快,容量小,成本高 D.速度慢,容量大,成本高 一个256K×8的存储器,其地址线和数据线总和为___C___。 注解:256=2的8次方,所以地址线为8,256K*8

计算机组成原理期末试题

泄露秘密 提交于 2019-11-26 12:28:58
一、选择类型题: 1.现代计算机组织结构是以_B____为中心,其基本结构遵循冯·诺依曼思想。 A. 寄存器 B. 存储器 C. 运算器 D. 控制器 2.存储字长是指 ___ B ___ 。 A .存放在一个存储单元中的二进制代码组合; B .存放在一个存储单元中的二进制代码位数; C .存储单元的个数; D .机器指令的位数。 3 . CPU 通过 ____ B __ 启动通道。 A .执行通道命令; B .执行 I/O 指令; C .发出中断请求; D .程序查询。 4 .对有关数据加以分类、统计、分析,这属于计算机在 __ C ____ 方面的应用。 A .数值计算; B .辅助设计; C .数据处理; D .实时控制。 5.电子计算机的算术/逻辑单元、控制单元及存储器合称为C A.CPU B.ALU C.主机; D.UP 6.存储周期是指 ______ 。 A .存储器的写入时间; B .存储器进行连续写操作允许的最短间隔时间; C .存储器进行连续读或写操作所允许的最短间隔时间; D .指令执行时间。 7.当定点运算发生溢出时,应______ 。 A.向左规格化; B.向右规格化; C.发出出错信息; D .舍入处理。 8 .加法器采用先行进位的目的是 ______ 。 A .优化加法器的结构; B .节省器材; C .加速传递进位信号; D .增强加法器结构。 9

浅谈汇编

爷,独闯天下 提交于 2019-11-26 11:59:48
创建编写汇编文件: 首先创建一个空文件 命名方式以.s结尾 第一行需要声明一个代码段 .text 第二行声明一个global + 方法名 .global test 指令: 汇编代码注释在行前加上 ; ret:返回 mov指令:目的寄存器,源操作数 举例:mov x0, #0x8 将8赋值给x0 add指令:将两个寄存器相加 sub指令:将两个寄存器相减 cmp指令:比较指令 操作数1 操作数2:cmp x0, x1 用x0减去x1,并将结果放到cpsr(程序状态寄存器)寄存器里 b 指令:跳转指令,相当于jump b 目标地址 bl指令:带返回的跳转指令,与b指令的区别是使用bl指令,ret指令才会生效 内存操作: 1、load,从内存中装载数据 ldr指令:从内存中读取数据 ldr x0, [x1] ldur指令: ,一般如果数据为负数,会用ldur ldp指令:从内存中读取数据,放到一对寄存器中 ldp w0, w1, [x2, #0x10] 2、store,往内存中存储数据 str指令:往内存中写入数据 str w0, [x1],将w0的数据写入到x1中 stur指令:参考ldur指令 stp指令:参考ldp指令 wzr指令:零寄存器 xzr指令:零寄存器 程序计数器: pc(Program Counter) 记录CPU当前指令是哪一条指令

汇编学习笔记四

和自甴很熟 提交于 2019-11-26 10:26:54
使用偏移地址寄存器来访问内存单元 我们通常使用访问内存单元的语句位 mov ax,ds:[0] 我们也可以使用这样的形式访问内存单元 mov ax,ds:[bx] 我们称bx位偏移地址寄存器,这里只能使用bx寄存器 bx成为偏移地址寄存器 inc指令表示将目标操作数加1 assume cs:code code segment mov ax,2000H mov ds,ax mov bx,1000H mov cl,0 cc: mov ds:[bx],cl inc cl inc bx jmp cc code ends end 这段指令的含义便是将0,1,2,3,4,5…辅助到一个内存中,我们使用了cc: mov ds:[bx],cl 这个指令中的cc表示一个标号,可以说是这个内存的地址 loop指令 这个指令和jmp指令也是相同的,都可以进行跳转,我们通常使用loop指令来进行循环,我们使用这个指令可以限制循环的次数,将循环的次数保存在cx寄存器中,没循环一次cx寄存器便会减一,当cx为0时便退出了循环,下面是一个例子进行说明。 assume cs:code code segment mov ax,2000H mov ds,ax mov cx,4 mov bx,1000H mov dl,0 cc: mov ds:[bx],dl inc dl inc bx loop cc code

汇编学习笔记二

守給你的承諾、 提交于 2019-11-26 10:25:54
指令的执行 指令的长度是可以是多个字节 cpu从cs:ip所指向的内存单元中读取指令,存放到指令缓存器中 ip=ip+所读指令的长度,从而指向下一条指令 执行指令缓存器的内容,回到下一个步骤 这个顺序是很重要的,为什么要使用2和3的顺序哪,这是因为当我们调用一个函数时使用这种方式很好用 我们可以得出结论,数据和指令是没有差别的,当使用读取cs:ip指向的地址,cpu便将其当成指令执行 debug使用 -u 表示显示出当前位置的代码 -u 段地址:偏移地址 显示指定位置的代码 -d 表示显示当前位置的数据 -u 段地址:偏移地址 显示指定位置的数据 -a 表示直接在当前位置写入指令 -a 段地址:偏移地址 表示在指定的位置写入指令 -r 表示显示当前寄存器的内容 -r 寄存器 然后显示指定寄存器的内容在下一行写入 :2000表示将这个寄存器的内容设置成2000 -e 段地址:偏移地址 可以改写内存的内容 jmp指令 jmp是转移指令是jump的简写,表示跳跃的意思。 指令的格式: jmp 2000:0表示将cs设置成2000,将ip设置成0,因此这个指令能够改变指令执行的位置 cs和ip寄存器是不能够使用mov来进行更改的,只能使用jmp来改变 比如 mov cs,1000是错误的 还可以使用 jmp 寄存器 的方式来更改ip的内容 call 函数名 表示函数的开始

深入理解java虚拟机(11):基于栈的字节码解释执行引擎

给你一囗甜甜゛ 提交于 2019-11-26 10:15:43
1、解释执行 编译过程如下 2、基于栈的指令集和基于寄存器的指令集 java编译器输出的指令流,基本是一种基于栈的指令集架构,指令流中的大部分指令都是零地址,依赖于操作数工作。与之相对的是基于寄存器的指令集,也就是目前pc支持的指令集。两者的不同,举例如下: 1+1基于栈的指令集iconst_1,iconst_1,iadd,istore_0,基于寄存器的指令集 mov eax 1,add eax 1。基于栈的指令集主要优点就是可移植性强,寄存器由硬件直接提供,程序直接依赖于这些硬件。基于栈的指令集可以自行决定是否将频繁访问数据放到寄存器中获得更好的性能,代码紧凑,编译器实现更加简单。因为栈实现在内存中和指令数量,所以基于栈的指令集要慢些。 3、基于栈的解释执行过程 public int calc(){ int a=100; int b=200; int c=300; return (a+b)*c; } public int calc(): Code: Stack=2,Locals=4,Args_size=1 0:bipush 100 2:istore_1 3:sipush 200 6:istore_2 7:sipush 300 10:istore_3 11:iload_1 12:iload_2 13:iadd 14:iload_3 15:imul 16:ireturn