(1)cpu0简介

一、cpu0介绍

        cpu032位架构16位通用寄存器,协处理器和其他特殊寄存器

(1)通用寄存器

全局指针寄存器:"Global Pointer register"(全局指针寄存器)是一个在某些处理器架构中存在的专用寄存器,它的主要作用是提供一个基准点(base point)以便高效地访问全局变量和静态数据。这个寄存器通常用于存储一个指向全局数据区(global data area)的固定地址,这样就可以使用相对于这个寄存器的偏移量来访问那些数据,而不是使用完整的32位或64位的地址。

帧指针寄存器:Frame Pointer register(帧指针寄存器)是一个在计算机架构中常见的寄存器,用于帮助在函数调用期间管理栈帧。它通常存储了当前函数的栈帧的起始地址。在函数调用期间,函数的局部变量和其他局部数据都存储在栈上。当一个函数被调用时,栈指针寄存器(Stack Pointer register)指向栈的当前顶部。为了访问局部变量,我们可以使用栈指针加上一个偏移量。然而,在一些情况下,栈指针可能会在函数调用过程中发生变化,例如在递归调用或多线程程序中。Frame Pointer register的作用是提供一个固定的参考点,用于访问函数的局部变量和其他局部数据,即使栈指针发生变化。它在函数调用开始时保存当前栈帧的起始地址,并在需要时作为参考点进行偏移计算。

栈指针寄存器:Stack Pointer register(栈指针寄存器)是一个在计算机架构中常见的寄存器,用于跟踪栈的顶部或当前栈帧的位置。栈是一种常见的数据结构,用于存储临时数据、函数调用信息和局部变量。栈指针寄存器保存了栈的当前顶部地址,它可以随着栈的变化而自动更新。在函数调用期间,栈指针寄存器用于分配和释放函数调用所需的内存空间。当一个函数被调用时,栈指针寄存器会向下移动,为新的栈帧分配空间。在函数返回时,栈指针寄存器会向上移动,释放当前栈帧所占用的空间。栈指针寄存器还用于访问函数的参数和局部变量。通过在栈指针寄存器的基础上添加偏移量,可以定位到特定的参数或局部变量的存储位置。总而言之,栈指针寄存器是在函数调用期间管理栈的关键寄存器。它跟踪栈的顶部或当前栈帧的位置,并用于分配和释放内存空间以及访问函数的参数和局部变量

Link Register (LR)是一个寄存器,用于存储函数的返回地址。当函数被调用时,调用指令会将函数的返回地址保存到LR寄存器中。然后,函数执行过程中可能会修改LR寄存器的值,以便在函数返回时能够正确地返回到调用点。

Status Word Register (SW)是一个特殊的寄存器,用于存储和表示处理器的状态信息。它通常由硬件或操作系统维护,并用于记录和监控处理器的状态。

(2)协寄存器

(3)特殊寄存器

指令寄存器:Instruction Register (IR)是一个寄存器,用于存储当前正在执行的指令。当处理器执行指令时,会将指令从内存中取出并存储到IR寄存器中,然后对该指令进行解码和执行。

内存地址寄存器:Memory Address Register (MAR)是一个寄存器,用于存储要访问的内存地址。当处理器需要读取或写入内存中的数据时,它会将要访问的内存地址存储到MAR寄存器中。

内存数据寄存器:Memory Data Register (MDR)是一个寄存器,用于存储从内存中读取或将要写入内存的数据。当处理器执行读取或写入内存的操作时,它会将数据存储到MDR寄存器中或从MDR寄存器中获取数据。

高位乘法结果寄存器:"High part of MULT result" 是指乘法运算的结果的高位部分。在某些处理器中,乘法操作的结果可能会超过一个寄存器的容量,因此需要将结果分为高位部分和低位部分进行存储。低位同理。

cpu0有三种指令类型:A、L、J

A型和算数有关、L型和内存有关、J型和控制流有关

Cpu0有两个ISA,第一个ISA- i是采用ARM CMP指令的cpu032I;第二个ISA-II是cpu032II,它采用了Mips的SLT指令。cpu032II包含了所有的cpu032I指令集,并增加了SLT、BEQ、…,指令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/663606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单臂路由实验(思科)

一,实验目的 在路由器的一个接口上通过配置子接口的方式,实现相互隔离的不同vlan之间互通。 二,设备配置 Switch1 Switch>enable 全局模式 Switch#configure terminal 配置模式 Switch(config)#vlan 10 …

【leetcode】20. 有效的括号

有效的括号 题目链接 // 栈结构 typedef char valuetype; typedef struct {valuetype* arr;int top;int capacity; } Stack;void Init(Stack* stack);void Push(Stack* stack, valuetype value); void Pop(Stack* stack);valuetype Top(Stack* stack); int Size(Stack* stack…

嵌入式中C 语言中的三块技术难点

C 语言在嵌入式学习中是必备的知识,甚至大部分操作系统都要围绕 C 语言进行,而其中有三块技术难点,几乎是公认级别的“难啃的硬骨头”。 今天就来带你将这三块硬骨头细细拆解开来,一定让你看明白了。 0x01 指针 指针是公认最难理…

26元/月起!腾讯云一键自动搭建4核16G幻兽帕鲁服务器

腾讯云无需任何配置自动搭建幻兽帕鲁游戏联机服务器,游戏24小时在线,4核16G游戏联机服务器低至26元/月起,新手小白也能一键搭建属于自己的幻兽帕鲁游戏联机服务器! 第一步:购买游戏联机服务器 购买入口:htt…

Django知识随笔

目录 1.如何再ajax中传输post数据? 2.在form表单中使用jquery序列化,input框过多。 1.如何再ajax中传输post数据? 在ajax传递的那个网址,会调用你路由的视图函数,在视图函数上面加一句 csrf_exempt 。写上之后会有提…

Android:RecyclerView跨行跨列的LayoutManager:Spannedgridlayoutmanager

前言: RecyclerView可以使用GridLayoutManager实现跨行,但是不能跨列;瀑布流布局可以跨列但是又不能跨行。原生自带的各个LayoutManager中并没有可以又跨行又能跨列的。网上搜寻了一番,找到了一个亲测可行好用的三方库&#xff1…

DL/T1578-2021电力线路多旋翼无人机巡检系

DL/T1578-2021电力线路多旋翼无人机巡检系 DL/T 1578—2021标准的发布和实施对于架空电力线路的巡检工作具有里程碑式的意义。它不仅填补了多旋翼无人机巡检系统在行业标准方面的空白,还为电力行业提供了一套完整、科学的测试和评估方法。这将有助于提高架空电力线…

使用apifox创建一个Mock Server Api 接口

安装 下载 Apifox - API 文档、调试、Mock、测试一体化协作平台。拥有接口文档管理、接口调试、Mock、自动化测试等功能,接口开发、测试、联调效率,提升 10 倍。最好用的接口文档管理工具,接口自动化测试工具。 创建mock api项目中使用 创建项…

构建LLM辅助生物威胁制造预警系统 人类越发展获取的超能力越大,破坏力越大,威胁越大。我们需要什么样的预警系统?既克服威胁又具有超能力 安全基础

https://openai.com/research/building-an-early-warning-system-for-llm-aided-biological-threat-creation 人类越发展获取的超能力越大,破坏力就越大,威胁越大。 人工智能就是为了赋予人人都能有超能力,而一旦被恶意或无意使用又威胁到人…

生产问题排查系列——未知404状态接口请求

引言 我们的产品主打金融服务领域,以B端客户为我们的核心合作伙伴,然而,我们的服务最终将惠及C端消费者。在技术实现上,我们采用了公司自主研发的微服务框架,该框架基于SpringBoot,旨在提供高效、可靠的服…

vtkNIFTIImageReader读写方位以及原点信息

使用vtkNIFTIImageReader读取体数据为vtkImageData时只会携带spacing信息&#xff0c;方向和原点信息不会写入&#xff0c;需要获取QFormMatrix进行解析。 1、方向及原点读取 vtkSmartPointer<vtkNIFTIImageReader> niiReader vtkSmartPointer<vtkNIFTIImageReader&…

数据结构—基础知识:哈夫曼树

数据结构—基础知识&#xff1a;哈夫曼树 哈夫曼树的基本概念 哈夫曼&#xff08;Huffman&#xff09;树又称最优树&#xff0c;是一类带权路径长度最短的树&#xff0c;在实际中有广泛的用途。哈夫曼树的定义&#xff0c;涉及路径、路径长度、权等概念&#xff0c;下面先给出…

Vue学习之使用HBuilderX创建并使用vue3.0项目

Vue学习之使用HBuilderX创建并使用vue3.0项目 下文将简述如何使用HBuilderX创建并使用vue3.0项目&#xff0c;包含项目创建、目录介绍、如何引用组件、首页自定义设置。 1、创建vue3.0项目 具体操作之前章节已经阐述过不在冗余介绍&#xff0c;创建时选择vue3项目即可。vue2…

【C++】C++入门 — 指针空值nullptr

C入门 指针空值 指针空值 在良好的C/C编程习惯中&#xff0c;声明一个变量时最好给该变量一个合适的初始值&#xff0c;否则可能会出现 不可预料的错误&#xff0c;比如未初始化的指针。如果一个指针没有合法的指向&#xff0c;我们基本都是按照如下 方式对其进行初始化: voi…

数据解构+算法(第07篇):动态编程!黄袍加身!

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

Vue3 函数式弹窗优化

背景 前面文章介绍了如何使用 函数式弹窗&#xff0c;弹窗方式是挂载在了全局&#xff0c;使用了getCurrentInstance方法拿到了全局上下文&#xff0c;进而拿到挂载的dialog进行弹窗操作。getCurrentInstance现在已被官方Vue API隐藏&#xff0c;为内部使用函数&#xff0c;现…

20240202在Ubuntu20.04.6下配置环境变量之后让nvcc --version显示正常

20240202在Ubuntu20.04.6下配置环境变量之后让nvcc --version显示正常 2024/2/2 20:19 在Ubuntu20.04.6下编译whiper.cpp的显卡模式的时候&#xff0c;报告nvcc异常了&#xff01; 百度&#xff1a;nvcc -v nvidia-cuda-toolkit rootrootrootroot-X99-Turbo:~/whisper.cpp$ WH…

ARM架构可视化ROS消息方案部署

ARM架构可视化ROS消息方案部署 三种方案, 1. webviz 2. foxglove 3. rosviz 注: web要用firefox, chromimum用不了, 可能是因为取消了时间同步机制的原因 先说三种方案的优劣, webviz 延迟比较高, 但是部署相对简单, foxglove 部署比较费劲, 但是效果不错, 延迟低, 本文会尽…

常见的企业网络问题及SD-WAN解决方案

现在办公都离不开网络&#xff0c;网络问题的解决是企业高效办公的必要条件。目前SD-WAN组网是很多企业会选择的网络解决方案。那么SD-WAN好在哪&#xff1f;可以帮助企业解决哪些用网难题呢&#xff1f; 一.解决网络性能不佳问题 当您的WAN受到压力时&#xff0c;数据包开始下…

Swagger学习使用

swagger升级导致访问ui页面地址不一样 方式一 依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.3.RELEASE</version> </parent> <dependen…