logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

制作一个RISC-V的操作系统五-RISC-V汇编语言编程四(伪指令和指令 addi 基于算数运算实现的相关伪指令 addi指令的局限性 LUI(构造高20位) 练习 lui和addi联合使用 li)

伪指令的例子可能包含类似于“li”(load immediate)这样的指令,它用于将一个立即数加载到寄存器中,实际上它可能会被扩展成一组“lui”(load upper immediate)和“addi”(add immediate)指令,来实现将32位或64位的常数加载到寄存器中。透明度:使用指令时,程序员需要明确知道和指定每一条指令的操作,伪指令允许程序员写出更符合直觉的代码,背后的具体指令

文章图片
#risc-v#操作系统
从零开始机器学习(机器学习 监督学习之线性回归 损失函数及可视化 梯度下降 线性回归的平方误差损失函数 lab实验)

机器学习就是机器通过不断训练数据集从逐渐知道正确的结果机器学习包括监督学习和非监督学习监督学习:需要输入数据和结果数据来不断训练学习监督学习包括回归和分类回归是结果是连续的,不是有限的分类是结果是离散的,是有限的非监督学习:只需要输入数据来学习例如聚类(将某类输入数据分一组,另外一类数据分一组)

文章图片
#机器学习#学习#线性回归
机器学习-KMeans聚类

最终聚类完后可以判断新的数据是属于哪个组的,只需要通过判断其距离哪个聚类中心最近即可。讲数据点分成K个不同的组,如果不知道K值,可以一个个尝试,效果最好的就是可以的K值。像素点分为不同的聚类(特征值相似度高的就是一堆聚类)依然是根据特征,不同对象不同的表达特征形式也不一样。

文章图片
#机器学习#kmeans#聚类
制作一个RISC-V的操作系统十-Trap和Exception(流 mtvec mepc mcause mtval mstatus trap完整流程)

陷入到S之前的权限可以是 U S 所以用一个比特位表示,陷入到U只能是U,那没有必要保存,因为执行完trap后恢复到的和执行trap时一样。在RISC-V架构的特权模式下,不同的异常等级(如Machine、Supervisor、User等)会有对应的陷阱值寄存器,例如在Supervisor模式下,类似的寄存器可能是。WPRI:读这个寄存器的时候忽略该部分的值,写这个寄存器的时候要保留该部分原来的值

文章图片
#risc-v#操作系统
从零制作操作系统-第四部分(GRUB引导实践)

hlt指令:使程序停止运行,处理器进入暂停状态,不执行任何操作,不影响标志。当RESET线上有复位信号、CPU响应非屏蔽中断、CPU响应可屏蔽中断3种情况之一时,CPU脱离暂停状态,执行HLT的下一条指令。CLI汇编指令全称为Clear Interupt,该指令的作用是禁止中断发生,在CLI起效之后,所有外部中断都被屏蔽,这样可以保证当前运行的代码不被打断,起到保护代码运行的作用。汇编指令是CPU

文章图片
#学习
制作一个RISC-V的操作系统九-上下文切换和协作式多任务(任务 任务上下文 多任务 多任务系统分类 协作式多任务 代码实现 )

SW 和 LW 指令是 RISC-V 指令集中最基本和最常用的两个指令,它们为 RISC-V 提供了在内存和寄存器之间高效传输数据的能力,是构建复杂计算系统的基础。这三个寄存器在 RISC-V 体系结构中扮演着重要的角色,为 RISC-V 系统提供了高效的全局数据访问、线程管理和基本操作支持。初始化就是设置各个任务的上下文(各个任务的上下文保存到内存中),如设置上下文的ra(返回地址)为任务的第一

文章图片
#risc-v
制作一个RISC-V的操作系统十二-定时器中断

我们实现的初始化就是根据hartid将对应的mtimecmp设置一个初始值,然后设置一些使能中断位。mtime按照一定频率递增,当大于等于mtimecmp时会产生一个timer中断。通过读取当前时间和此时的tick值来计算得到当前最新的时间。MTIP是mip上模式的代表当前是否发送计时器中断位。硬件定时器的周期:就是多久会触发一次计时器中断。MTIE是mie上m模式的使能计时器中断位。类似计数器,

文章图片
#risc-v#单片机#嵌入式硬件
制作一个RISC-V的操作系统五-RISC-V汇编语言编程七(栈 栈帧 为何要有 函数调用约定 寄存器约定 跳转和返回指令约定 被调用函数约定 练习 C与汇编混合编程 汇编中嵌入C c中嵌入汇编 )

在汇编代码中,使用mul指令将a的平方保存在result_a寄存器中,将b的平方保存在result_b寄存器中,然后使用add指令将result_a和result_b的值相加后保存到c寄存器中。最后,使用约束操作数([c] “=r” ©)将c寄存器的值存储到变量c中,并将变量a和b的值存储到对应的寄存器中。通过约定参数的传递方式,编译器和汇编器可以有效地处理函数参数的传递,并生成正确的汇编和机器代

文章图片
#risc-v#c语言
制作一个RISC-V的操作系统八-内存管理(内存管理分类 链接脚本 ld 脚本语法 从ld 脚本获取符号值 基于page级别实现动态分配 管理heap区域各个page的状态 动态分配(页级别) 代码)

汇编中可以使用链接脚本中的符号来赋值,只不过要当链接后才会生效,即生成目标文件时并不会赋值成功(该符号会被识别为未定义符号(Undefined symbol)表示该符号在当前目标文件中没有定义,在链接阶段会被解析为其他目标文件中定义的符号。data段里声明了一个变量, 这个变量的值会被包进ELF里,ELF文件里会包括这个变量的符号与值,但是如果比如编译器发现, 你有些变量一开始是0, 编译器就可以

文章图片
#risc-v#java#linux
操作系统-操作系统体系结构(内核 外核 模块化 宏内核 微内核 分层结构)

外核给用户进程直接分配未经抽象的硬件资源,当用户进程经常要随机访问自己所分配到的虚拟外存空间时,此时由于实际对应的物理空间是离散的,在随机访问各个位置时可能需要大量的移动磁头。在普通操作系统中,进程申请内存空间时得到的时虚拟的地址空间(连续的),此时虚拟页面对应到实际的物理页框中,这些物理页框在内存中其实是离散的。都能相互调用,此时如果某个模块出现问题,可能出现的问题是调用的模块的问题,也有可能是

文章图片
#linux#运维#服务器
    共 67 条
  • 1
  • 2
  • 3
  • 7
  • 请选择