首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏嵌入式ARM和Linux

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

    对于MIPS指令集架构描述最好的,肯定是MIPS公司出版的MIPS32和MIPS64架构规范。MIPS32是MIPS64的一个子集,用于描述具有32位通用目的寄存器的CPU。 为了简单,我们缩写为MIPS32/64。 生产MIPS架构CPU的公司,尽量兼容MIPS32/64规范。 在MIPS32/64规范之前,已经发布了多版的MIPS架构。 MIPS II: 为没有投产的MIPS-R6000机器定义的指令集。MIPS-II是MIPS32的前身。 MIPS III: 为R4000引入的64位指令集。 MIPS32、MIPS64: 1998年,由从Silicon Graphics公司分拆出来的MIPS Technologies Inc.公司制定的标准。 MIPS32是MIPS-II的超集,MIPS64是MIPS-IV的超集(还以可选的方式包含了MIPS-V的大部分)。 大多数1999年之后设计的MIPS架构CPU都兼容这些标准。

    6.8K20编辑于 2022-08-15
  • 来自专栏黑伞安全

    从一道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

    3.6K20发布于 2020-11-09
  • 来自专栏嵌入式ARM和Linux

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

    MIPS领域最无法忽视的贡献者是Stanford大学的MIPS项目。 1.2 MIPS架构5级流水线 图1.2: MIPS-5级流水线 MIPS本身就是基于流水线优化设计的架构,所以,将MIPS指令分为5个阶段,每个阶段占用固定的时间,在此,固定的时间其实就是处理器的时钟周期 (MIPS架构的汇编也是最简单易懂的代码之一) 尽管有这些问题,但是MIPS架构的设计者也在思考,如何使CPU可以被编译器更加简单高效地优化。 1.4 MIPS架构的发展 纵观MIPS架构的近40年的发展历程,虽经历过辉煌,但现在也日渐式微。网上有许许多多关于MIPS架构的评论或者见解。笔者对于市场一窍不通,故不在此班门弄斧。 按照约定,MIPS架构也保留了2个通用寄存器,让异常程序可以自举(在MIPS架构的CPU上,不使用寄存器是无法工作的)。

    9.2K21编辑于 2022-08-15
  • 来自专栏叶子的开发者社区

    MIPS五种寻址方式

    以PC程序计数器和指令中常数之和作为地址,即16位地址左移2位(即乘以4)与PC计数器相加

    81420编辑于 2023-10-23
  • 来自专栏嵌入式ARM和Linux

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

    牛顿 这是向MIPS架构移植软件的问题系列之第二篇。上一篇《MIPS架构深入理解8-向MIPS架构移植软件之大小端问题》中,我们讨论了大小端对于移植代码的影响。 在之前的文章《MIPS高速缓存机制 》中,我们已经了解了初始化和正确操作Cache的方法。本段主要讲解一些可能出现的问题,并解释如何处理这些问题。 为此,MIPS架构提供了Cache指令,可以根据需要调用它们,消除这种内存和Cache的不一致性。 所以,MIPS32/64提供了synci指令,它可以执行D-Cache的回写操作和I-Cache的失效操作。具体可以参考MIPS指令集参考。 4 Cache重影和页着色 我们在《MIPS高速缓存机制》一文中已经描述了Cache重影的根源。

    1.6K10编辑于 2022-08-15
  • 来自专栏10km的专栏

    解决编译mips gcc 5.2.0

    mips交叉编译器(gcc 5.2.0),在编译到mpfr时报了个错: /bin/bash . 附上编译mips-gcc-5.2.0的脚本 #! gcc compiler location mips_gcc=/opt/toolchains/mips-gcc520-glibc222 install_prefix=$sh_folder/release /opt/toolchains/mipsel-gcc520-gdface old_sysroot=$mips_gcc/mips-linux-gnu/libc target_sysroot=$old_sysroot \ --with-arch-64=mips64r2 \ --with-float=hard \ --with-mips-plt \ --enable-extra-sgxxlite-multilibs

    2.6K10发布于 2019-05-25
  • 来自专栏叶子的开发者社区

    MIPS指令集实验

    编写一个简单的终端输出“Hello World!!”的小程序,首先写好一些数据包括CONTROL和DATA的地址以及字符串Hello World,然后将CONTROL和DATA的地址存储在寄存器中以之作为基址,将字符串首地址写入DATA,将4写入CONTROL

    52740编辑于 2023-10-09
  • 来自专栏嵌入式ARM和Linux

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

    牛顿 这是向MIPS架构移植软件的问题系列之第三篇。 在前两篇文章 *《MIPS架构深入理解8-向MIPS架构移植软件之大小端问题》 *《MIPS架构深入理解9-向MIPS移植软件之Cache管理》 中,我们分别讨论了大小端模式和Cache对于移植代码的影响 MIPS架构提供了sync指令实现这个目的,它可以确保sync指令之前的访问先于之后的执行。 对于sync指令的详细使用方法,可以参考《MIPS指令集参考大全》一文。 不同的体系架构对执行顺序作出了不同的规定。 比如,一个运行MIPS代码的CPU,实际上运行的store指令大约占所有指令的10%左右;但是,往往是突发式访问,比如函数的调用过程中,首先需要压栈操作一组寄存器的值。

    1.2K10编辑于 2022-08-15
  • 来自专栏嵌入式ARM和Linux

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

    但是,对于MIPS架构来说,有些事情可能使用汇编语言编写更好。讲解这部分内容的时候,主要涉及inline汇编、内存映射I/O寄存器和MIPS架构可能出现的各种缺陷。 MIPS架构CPU可以支持大小端两种模式,需要上电时进行配置。 5 在MIPS架构上编写支持任意字节序的软件 你可能会想,我是否可以写一个正确运行在MIPS CPU上的程序,不论它被配置为大端模式,还是小端模式。或者编写一个可以运行在任意配置的板子上的驱动程序。 正是这个特性使得MIPS CPU能够配置大小端工作模式。当你重新配置MIPS CPU的字节序时,正是改变了这个操纵数据加载的硬件逻辑单元的行为。 为了配合CPU大小端的可配置性,大部分的MIPS工具链都能够在编译flag中添加一个选项,编译产生任何字节序的代码。 如果你设置了MIPS架构的CPU与系统不匹配的字节序,将会发生一些预料不到的事情。

    2.4K10编辑于 2022-08-15
  • 来自专栏嵌入式ARM和Linux

    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.6K30编辑于 2022-08-15
  • 来自专栏宸机笔记

    MIPS-DVRF_stack_bof_1

    接下来使用gdb-multiarch来连接程序 并在gdb开始时输入 set architecture mips 设置程序的架构为mips set endian little 设置字节序为小端序 target

    95020发布于 2021-04-02
  • 来自专栏宸机笔记

    MIPS-vuln_system栈溢出

    而读取数据的buf只有256大小,但是我们却可以在passwd中填充n个数据,因此便造成了栈溢出

    2K10发布于 2021-04-02
  • 来自专栏乱码三千

    汇编语言之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

    10.6K31发布于 2021-08-24
  • 来自专栏giantbranch's blog

    MIPS PWN 实例 —— UCTF 2016 ADD

    全国大学生信息安全竞赛的一个题,是MIPSEL(小端的) qemu虚拟机可以在这里下 https://people.debian.org/~aurel32/qemu/mipsel/ 启动: qemu-system-mips64el 这个MIPS实际上是硬件上不支持NX的,所以这里开了也没有用所以可以直接执行shellcode 这个代码一开始还是比较难看的,但是misp应该不会太难 下面这个的输入没有长度限制,应该存在缓冲区溢出 生成 ─────────────────────────────────────────────────────────────────────────────────────────────[ code:mips

    35200编辑于 2024-12-31
  • 来自专栏全栈程序员必看

    龙芯CPU架构_龙芯mips架构

    龙芯架构 龙芯指令集: CPU访存指令 24个 全部来自MIPS CPU算数指令(ALU) 10个 全部来自MIPS CPU算数指令 14个 全部来自MIPS CPU乘除指令 12个 来自MIPS 12个 来自龙芯(其中8个重复MIPS指令功能) CPU跳转分支指令20个 全部来自MIPS CPU位移指令 15个 全部来自MIPS CPU特殊指令 2个 全部来自MIPS CPU异常指令 12个 全部来自MIPS CPU CPO指令 10个 全部来自MIPS 龙芯处理器共131个指令,其中119个来自MIPS,12个来自龙芯(但其中MULTG、DMULTG、MULTUG、DMULTUG 、DIVG、DDIVG、DIVUG、DDIVUG共8个重复MIPS的指令功能。)

    85550编辑于 2022-10-03
  • 来自专栏nginx遇上redis

    MIPS漏洞调试环境安装-栈溢出

    ||作者:ray 环境安装 环境安装主要包括三个部分,分别是: · 静态分析环境安装 · MIPS交叉编译环境安装 · 动态调试环境安装 · qemu模拟运行mips系统 静态分析环境安装 主要是IDA jeb mips也有rop插件,名字是PleaseROP。 MIPS交叉编译环境环境安装 buildroot是Linux平台上一个构建嵌入式Linux系统的框架。 /mips/选择 debian_squeeze_mips_standard.qcow2和vmlinux-2.6.32-5-4kc-malta。 MIPS栈溢出 这一部分主要描述MIPS中的栈溢出相关的知识,假设大家已经有一定的x86漏洞利用经验。首先是介绍MIPS汇编的一些和x86不一样的地方,其次是一个简单栈溢出漏洞的利用。 Mips 汇编基础 MIPS32寄存器分为两类:通用寄存器(GPR)和特殊寄存器。通用寄存器:MIPS体系结构中有32个通用寄存器,汇编程序中用$0~$31表示。

    2.1K50发布于 2019-10-15
  • 来自专栏逢魔安全实验室

    DDCTF 2018 逆向 baby_mips Writeup

    所以对MIPS指令有一定研究,而在DDCTF 2018中刚好有一道逆向题目是MIPS程序,于是尝试做了一下。 0x01 环境搭建 由于我们通常的操作系统指令集都是x86的,所以无法跑MIPS程序。 由于MIPS架构有两种——大端MIPS和小端MIPS。所以,我们需要确定这个程序是大端MIPS还是小端MIPS。 ELF 32-bit LSB很明显,这个程序是32位小端的MIPS。 所以,我们使用qemu-mipsel baby_mips来运行这个程序。 因为我们需要远程调试MIPS程序,所以要加上-g 端口参数,qemu-mipsel -g 1234 baby_mips,此时用IDA pro就可以通过Remote GDB Server来调试这个MIPS 然后,为了方便我们了解key比对函数的功能,我们可以需要对MIPS进行反编译,目前可以反编译MIPS程序的工具有两个。

    1.8K50发布于 2018-05-15
  • 来自专栏米扑专栏

    ARM、X86Atom、MIPS、PowerPC

    1998年,MIPS脱离SGI,成为MIPS技术公司;随后,MIPS公司的战略发生变化,把重点放在嵌入式系统;1998年-MIPS科技股票在美国纳斯达克股票交易所公开上市。 1999年,MIPS公司发布MIPS32和MIPS64架构标准,为未来MIPS处理器的开发奠定了基础。新的架构集成了所有原来NIPS指令集,并且增加了许多更强大的功能。 MIPS公司陆续开发了高性能、低功耗的32位处理器内核(core)MIPS324Kc与高性能64位处理器内核MIPS64 5Kc。 2000年,MIPS公司发布了针对MIPS32 4Kc的版本以及64位MIPS 64 20Kc处理器内核。  参考推荐: ARM、X86/Atom、MIPS、PowerPC arm powerpc mips dsp ARM and MIPS

    2.7K20发布于 2019-02-19
  • 来自专栏云计算运维

    LoongArch 的内核代码复制 MIPS 代码

    龙芯被指 LoongArch 的内核代码复制 MIPS 代码 龙芯今年夏天推出了 3A5000 处理器,该处理器建立在龙芯的 LoongArch 指令集架构(ISA)上,龙芯将其描述为“一种新的 RISC 但 Linux 内核的上游维护者在审查 LoongArch 提交的代码时质疑,“你一直说 ‘不是 MIPS’,但我看到的只是 MIPS 代码的盲目复制。” 这仍然是同样过时的、破碎的 MIPS 代码,只是换了个名字而已。”

    1.3K30发布于 2021-09-01
  • 来自专栏安智客

    MIPS架构上虚拟化TEE实现介绍

    RSIC的代表架构实现除了ARM以外还有MIPS、PowerPC、DSP。CISC就是大名鼎鼎的X86,其中Intel和AMD公司的芯片实现是其中代表。 支持MIPS架构的SierraTEE采用OmniShield虚拟化技术,可完整保护安全内核以及任何的安全周边,使其与Rich环境中执行的程序代码隔离。 SierraTEE可为支持OmniShield™的MIPS CPU提供安全、且易于应用的解决方案。 它是通过Imagination的OmniShield安全技术来开发的,MIPS CPU中的硬件虚拟化技术可用来构建多重领域。 从上图可以看出不管事基于ARM还是MIPS架构的CPU,SierraTEE其TEE实现基本是一样的,区别在与基于芯片架构上的中间层不一样。

    2.4K90发布于 2018-02-24
领券