首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MIPS架构深入理解10-向MIPS移植软件之内存序

牛顿 这是向MIPS架构移植软件的问题系列之第三篇。...在前两篇文章 *《MIPS架构深入理解8-向MIPS架构移植软件之大小端问题》 *《MIPS架构深入理解9-向MIPS移植软件之Cache管理》 中,我们分别讨论了大小端模式和Cache对于移植代码的影响...这种情况下,软件一般会采用精心的设计,比如锁和信号量,进行同步操作。 但是,使用共享内存,还有一些技巧,往往效果更好,开销也更小。因为不需要使用信号量或者锁。但是,可能会被乱序执行打断。...但是,一般情况下,写缓存(英文称为write buffer)都是硬件保证的,对于软件来说不用管理。...read操作抢先于write操作执行 上面已经讨论过,MIPS32/64架构允许这种操作。如果想要软件更加健壮和具有可移植性,就不应该假定read和write操作顺序会被保持。

90610

MIPS架构深入理解9-向MIPS移植软件之Cache管理

牛顿 这是向MIPS架构移植软件的问题系列之第二篇。上一篇《MIPS架构深入理解8-向MIPS架构移植软件之大小端问题》中,我们讨论了大小端对于移植代码的影响。...移植性比较好的操作系统,比如Linux,不管是复杂的、不可见的Cache,还是简单的Cache,都能很好的适配。即,Linux一般提供一组很完备的API,供驱动编写者使用。...比如说,Linux操作系统,多个虚拟地址可能都会访问一个物理页(共享库)。...这也是MIPS架构硬件从简,软件辅助的设计思路带来的弊端;也是与X86和ARM架构的竞争中败下来的原因。所以,对于Cache,我们可以不必过多忧虑,针对具体的芯片具体分析就可以了。...但是,对于上面的知识点,如果掌握了的话,不管是在开发驱动程序,还是开发操作系统,亦或是移植别的软件工程到MIPS架构上,都是有百利无一害的。

1.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

MIPS架构深入理解11-向MIPS移植软件之编程语言

牛顿 这是向MIPS架构移植软件的问题系列之第四篇。...在前三篇文章 *《MIPS架构深入理解8-向MIPS架构移植软件之大小端问题》 *《MIPS架构深入理解9-向MIPS移植软件之Cache管理》 *《MIPS架构深入理解10-向MIPS移植软件之内存序...详细的使用方法可以参考GCC手册中关于MIPS架构的部分章节内容。...3 在MIPS架构上使用C编写程序时的一些其它问题 负指针 当在MIPS架构上运行比较简单的程序时,一般直接运行在非映射内存区,也就是kseg0或kseg1区域时,所有32位数据指针的最高位都置1,看起来像是一个负数...堆栈的使用 尽管MIPS架构缺乏对堆栈的支持,但是MIPS-C编译器还是实现了一个常规的栈结构,主要就是按照某种约定,指定通用寄存器作一些特殊的用途,比如使用哪几个寄存器传递函数参数,使用哪个寄存器作为

1.1K30

MIPS架构深入理解8-向MIPS移植软件之大小端模式

1 MIPS架构移植软件时常见的问题 2 什么是字节序:WORD、BYTE和BIT 2.1 位、字节、字和整形 3 软件和字节序 3.1 可移植性和字节序 4 硬件和字节序 4.1 建立连接字节序不一致的总线...我们不可能每个软件都从头开始搞起。大部分时候,我们都是利用已有的软件,不管是应用软件,还是操作系统。所以,对于MIPS架构来说,完全可以把在其它架构上运行的软件拿来为其所用。...如果你要采用的软件,其可移植性比较好的话,可能只需要使用支持MIPS架构的编译器重新编译一遍就可以了;如果程序只是为特定的硬件平台编写的话(大部分嵌入式软件都是如此),可能处处是坑。...而像Linux系统,在编写应用或者系统软件的时候,一般都会考虑可移植性。所以说,基于Linux软件一般都可以直接编译使用。...但是,大部分MIPS架构的CPU为了保持硬件的简单,而将一些Cache的副作用暴漏给软件,需要软件进行处理。关于这部分内容,我们后面会进行阐述。

1.8K10

MIPS架构深入理解2-MIPS架构体系

28:(gp)为了简化静态数据的访问,MIPS软件保留了一个寄存器:全局指针gp(global pointer, 29:(sp)堆栈指针寄存器。...因为CISC指令集架构比如X86架构确实能够处理非对齐load和store,所以,当你移植这上面的软件MIPS架构上时,可能会遇到问题。...此处,又再一次体现了MIPS架构的设计理念:硬件尽量简单,辅以软件实现。编译器提供的辅助有: 加载32位立即数: 直接加载立即数。 从内存加载数据: 你可以编码一个load,实现从内存中读取变量。...而如果把时序延迟问题暴露给编程人员,让他们通过软件规避这些问题,硬件实现容易了,但是软件设计就会变得复杂。所以,这是一个平衡和选择的问题。...我们知道,MIPS架构的设计理念是:硬件尽量简单,辅以软件实现。所以,MIPS架构把一些流水线的时序延迟问题暴露给编程人员或者编译器去优化实现。

5.3K20

从一道mips题目学习搭建mips环境及ROP

本文以一道简单的mips pwn题,讲解mips环境搭建及mips ROP的构造。...32位的;LSB表示是小端,如果是MSB则表示大端;MIPS32 version 1 (SYSV)表示MIPS的版本,MIPS版本有MIPS32/64、MIPS I到V等等;题目是动态链接的,所以我们需要对应的动态链接库...直接运行程序是运行不起来的,这是因为mips架构的elf文件需要在mips环境中才能运行,而且还需要相应的动态链接库。所以下面我们来一起搭建mips环境。要注意题目是什么环境,搭建的就得是什么环境。...mips $ sudo ifconfig ens33 down mips $ sudo brctl addbr virbr0 mips $ sudo brctl addif virbr0 ens33...mips $ sudo brctl stp virbr0 off mips $ sudo brctl setfd virbr0 1 mips $ sudo brctl sethello virbr0

2.7K20

MIPS架构深入理解1-MIPS和RISC架构体系介绍

所以,龙芯选择MIPS是技术上的选择,也是时代的选择。虽然,最近几年RISC-V开源指令集非常火热,但是其上的软件生态同样需要布局。...32个通用寄存器: 通用寄存器的个数是由软件需求驱动的,32个通用寄存器是现代计算机架构中常用的数量。...它们之间的逻辑关系由软件实现,这也是MIPS架构的设计理念:强调软硬件结合,简化硬件设计。...做完这些后,跳转到一段保存到低内存中的预定义好的程序,之后的工作完全由软件控制。 其实,现在处理器对于中断都是基于能少则少的原则进行处理。...MIPS架构把中断看作为异常的一种,MIPS的异常涵盖了CPU想要中断所有顺序的执行,调用软件处理程序所产生的所有事件。比如中断、试图访问物理地址不存在的虚拟内存或者其它事情都可以产生异常。

6.9K11

汇编语言之MIPS汇编

简介 咱们知道x86架构cpu用于PC端和工作站较多,ARM架构cpu常见于手机和单片机,那么MIPS架构的cpu主要在哪些设备可以找到它们的身影呢?...中国龙芯 PS游戏机 学习环境搭建 安装JDK, 主要用于运行mips模拟器mars MARS模拟器:https://courses.missouristate.edu/KenVollmar/mars/...download.htm 寄存器 在mips中通用寄存器用$开头表示,一共有32个 寄存器编号 寄存器名 寄存器用途 $0 $zero 永远返回0 $1 $at 保留寄存器 $2-$3 $v0-$v1...MIPS汇编中的分段处理 .data #数据段 .text #代码段 传送指令 加载立即数指令 li li(load immediate) :用于将立即数传送给寄存器 li $t0,1 ;十六进制数据使用...$t1,sub # 如果$t0中的数据小于$t1,则跳转到sub分支,执行sub中的代码,否则,按照顺序执行bgt下面的代码, sub是一个代号,可以自定义 sub: 练习1: 将以下c代码转换成mips

9.5K30

linux 软件安装

创建小环境:-n 指定小环境的名字 rna,并指定环境的python版本为python=3 conda create -y -n rna python=3 创建小环境成功后会出现3个done 图片 三、安装软件...图片 1.安装软件的方法: 图片 安装 conda install 出现三个done 显示安装完成 图片 2.安装特定版本 图片 3.特殊情况 图片 4.查看conda 环境中已经安装的软件...conda list #基本用法 conda list fast #查看符合正则表达式的软件 conda list -n rna #查看指定环境的软件 5.删除软件 conda remove conda remove -n rna #删除指定环境里的软件 6.常用命令 图片 7.安装软件的另一种方式:用yml文件安装 • 导出当前环境: conda env export...envname > env.yml • 导入环境: conda env create -n envname --file env.yml 8.mamba 安装软件更加丝滑 #安装mamba conda

19720

Linux软件管理

Linux 软件管理 1、软件管理简介 Redhat和Centos中软件管理是依靠软件包管理器(RPM)来实现的。...RPM(Redhat Package Manager)软件包管理器提供了在linux操作系统中安装,升级,卸载软件(程序)的方法,并提供对系统中所有软件(程序)状态信息的查询;除了这些功能外,RPM软件包管理器还提供了制作软件包的功能...2.2 软件包管理器的核心功能 制作软件包 安装软件 卸载软件 升级软件 查询软件 校验软件 3、软件包简介 3.1 软件包组成 软件包的组成清单 文件清单 安装或卸载的运行脚本 数据库(公共) 程序包名称及版本...6.1 系统发行版本的光盘 linux的ISO镜像文件自带了非常多的RPM安装包,且这些软件版本是最适合当前linux系统的。...############# [100%] [root@zsl ~]# rpm -qa | grep wget wget-1.19.5-10.el8.x86_64 升级注意事项 不要对内核做升级操作 Linux

4K10

LINUX 安装软件

Yum软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum软件仓库可以根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安装到系统。...yum info 软件包名称查看软件包信息yum install 软件包名称安装软件包yum reinstall 软件包名称重新安装软件包yum update 软件包名称升级软件包yum remove...1.5 系统初始化进程Linux系统的开机过程是这样的,即先从BIOS开始,然后进入Boot Loader,再加载系统内核,然后内核进行初始化,最后启动初始化进程。...初始化进程作为Linux系统启动后的第一个正式服务,它需要完成Linux系统中相关的初始化工作,为用户提供合适的工作环境。同学们可以将初始化进程粗犷地理解成从我们按下开机键到看见系统桌面的这个过程。...Linux系统在启动时要进行大量的初始化工作,比如挂载文件系统和交换分区、启动各类进程服务等,这些都可以看作是一个一个的单元(unit),systemd用目标(target)代替了System V init

7.4K30
领券