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

汇编语言之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 ;十六进制数据使用...汇编代码: scanf("%d",$a); scanf("%d",$b); if(a>b){ printf("YES"); }else{ printf("NO"); } 汇编代码: #

9.7K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    linux 编译汇编,linux下的汇编教程

    linux下的汇编教程 第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作 ARM的协处理器等。...Linux汇编行结构 任何汇编行都是如下结构: [:] [} @ comment [:] [} @ 注释 Linux ARM 汇编中,任何以冒号结尾的标识符都被认为是一个标号,而不一定非要在一行的开始。...Linux 汇编程序中的标号 标号只能由a~z,A~Z,0~9,“.”,_等字符组成。...Linux汇编程序中的分段 (1).section伪操作 用户可以通过.section伪操作来自定义一个段,格式如下: .section section_name [, “flags”[, %type[...如果想将生成的目标代码反汇编,还可以用objdump工具: arm-linux-objdump -D bootstrap.elf 至此,所生成的目标文件就可以直接写入Flash中运行了。

    3.5K31

    【十分钟教会你汇编MIPS编程入门

    纯本人手打原创,有错请指教,要转载请声明出处,谢~~): MIPS Architecture and Assembly Language Overview MIPS架构及其汇编初步 (开始之前稍微再提下...,整体分为4个结构:)   1:寄存器种类;   2:算术及寻址指令   3:程序结构   4:系统调用 Data Types and Literals 数据类型 所有MIPS指令都是32位长的 各单位...下一共有32个通用寄存器 在汇编中,寄存器标志由$符开头 寄存器表示可以有两种方式 直接使用该寄存器对应的编号,例如:从$0到$31 使用对应的寄存器名称,例如:$t1, $sp(详细含义,下文有表格...Name寄存器名 Description寄存器用途 0 zero the value 0永远返回零 1 $at (assembler temporary) reserved by the assembler汇编保留寄存器...《MIPS Qucik Tutoria

    2.7K75

    基于Qt实现的带图形界面的MIPS汇编指令的编辑器、汇编器、反汇编器、模拟器

    MIPS-sc MIPS-sc 为 MIPS simulator&compiler 的简称,是一个基于Qt实现的带图形界面的MIPS汇编指令的编辑器、汇编器、反汇编器、模拟器。...源代码已放置在github中: https://github.com/yunwei37/MIPS-sc-zju 预览 模拟器界面: 左侧为32位内存内容、可以以ascii码方式或反汇编指令方式查看;...; 支持部分伪指令; 支持 .asm 汇编文件汇编为 .bin 文件; 支持 .bin 文件反汇编为 .asm 文件,支持加载 .bin 文件并执行: 支持模拟运行机器码,支持模拟终端输入输出 支持简单的调试功能...C语言实现的将MIPS汇编指令转换为机器码,或进行反汇编 公共头文件compiler.h: compile.c 实现了将输入的源代码文件转换为二进制数组; decompiler.c 将一条机器码反汇编为...MIPS汇编指令 singleCompiler.c 将一条MIPS汇编指令编译为机器码(可单独调用) c++实现的模拟器类: simulator.h simulator.cpp Qt

    1.1K40

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

    MIPS-3D: 通常和单精度对结合使用,提供了一些指令,用于3D场景渲染时的浮点矩阵运算。 2.1 MIPS汇编语言的风格初探 本部分对汇编语言只做一个简单的介绍,详细的理解后面会再展开。...我们或多或少地已经接触过汇编语言,下面是MIPS架构的一小段汇编代码: # 注释 entrypoint: # 标签 addu $1, $2, $3 # 基于寄存器的加法,...2.2 寄存器 MIPS有32个通用寄存器(0-31),各寄存器的功能及汇编程序中使用约定如下: 下表描述32个通用寄存器的别名和用途 寄存器 别名 使用 $0 $zero 常量0 $1 $at 保留给汇编器...像MIPS程序拆散和重装大常数由汇编程序来完成,汇编程序必需一个临时寄存器来重组大常数,这也是为汇编 保留 2..3:(v0-v1)用于子程序的非浮点结果或返回值。...如果想要查看汇编机器代码,可以借助反汇编工具objdump。 2.7 基本地址空间 MIPS架构具有两种特权模式,用户模式和内核模式。现在,我们讨论MIPS架构对内存空间的分配使用情况。

    5.7K20

    Win32 Linux汇编语法区别

    就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在 Linux 的启动部分。...Linux 下用汇编语言编写的代码具有两种不同的形式。第一种是完全的汇编代码,指的是整个程序全部用汇编语言编写。...二、Linux 汇编语法格式 绝大多数 Linux 程序员以前只接触过DOS/Windows 下的汇编语言,这些汇编代码都是 Intel 风格的。...,那我们也以这种方式来开始介绍 Linux 下的汇编语言程序设计。 在 Linux 操作系统中,你有很多办法可以实现在屏幕上显示一个字符串,但最简洁的方式是使用 Linux 内核提供的系统调用。...四、Linux 汇编工具 Linux 平台下的汇编工具虽然种类很多,但同 DOS/Windows 一样,最基本的仍然是汇编器、连接器和调试器。

    2.4K40

    TP-LINK WR941N路由器研究

    所以需要设置--target=mipsbel-linux参数进行编译gdb,才能调试大端的mips程序。 编译差不多编译了半天,准备改天搞一个8核的机器专门来编译程序.......,就是syscall 0x40404 系统调用的相关函数除了几个mips特有的,其他的都是跟linux下的syscall一样,可参考: https://git.kernel.org/pub/scm/linux.../kernel/git/torvalds/linux.git/tree/arch/mips/include/uapi/asm/unistd.h 比如sys_socket: #define __NR_Linux.../mips/bits/socket.h 和其他架构不一样,mips架构中,tcp是2,udp是1 所以上面的代码比如在ubuntu中,是一个udp反连的代码,但是在mips中就是tcp反连 还有一点就是...wr941n是大端,所以12345端口是0x3039而不是0x3930,ip地址同理 然后把上面代码转换成mips指令的汇编 但是有个问题,之前说了该路由器不接收\x00和\x20两个字符,而上面的汇编转换成字节码

    1.3K60

    TP-LINK WR941N路由器研究

    所以需要设置--target=mipsbel-linux参数进行编译gdb,才能调试大端的mips程序。 编译差不多编译了半天,准备改天搞一个8核的机器专门来编译程序.......,就是syscall 0x40404 系统调用的相关函数除了几个mips特有的,其他的都是跟linux下的syscall一样,可参考: https://git.kernel.org/pub/scm/linux.../kernel/git/torvalds/linux.git/tree/arch/mips/include/uapi/asm/unistd.h 比如sys_socket: #define __NR_Linux...4000 #define __NR_socket (__NR_Linux + 183) 所以$v0=4183表示的就是socket函数,具体参数信息可以去参考linux的系统调用: http:...wr941n是大端,所以12345端口是0x3039而不是0x3930,ip地址同理 然后把上面代码转换成mips指令的汇编 但是有个问题,之前说了该路由器不接收\x00和\x20两个字符,而上面的汇编转换成字节码

    2.2K80

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

    MIPS架构的汇编也是最简单易懂的代码之一) 尽管有这些问题,但是MIPS架构的设计者也在思考,如何使CPU可以被编译器更加简单高效地优化。...1.5 MIPS和CISC的对比 大部分的程序员对汇编语言的认知都来源于X86架构,毕竟是最早的CPU架构之一。但是,当你看见基于MIPS架构的汇编代码时,你还是得到一些惊喜。...我个人的感觉就是,基于MIPS架构的汇编语言理解起来还是比较容易的,毕竟它是精简指令集。但是,它又有一些程序代码设计上的奇技淫巧,需要我们额外理解。...没有对堆栈寄存器的特定支持: 虽然,传统意义上的MIPS汇编代码确定也会定义一个寄存器作为堆栈指针寄存器,但是,硬件上没有规定那个寄存器是特定的sp寄存器。...这也是我们经常在MIPS架构的汇编代码中看到的处理方式。

    7.9K21

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

    还有一个静态分析工具,就是jeb mips,它可以看汇编代码,同时也支持反编译,但是在官网下载的体验版的是不支持反编译功能的,同时我也搜了一些破解版也没找到能用的,如果大佬有的话,跪求。...jeb mips也有rop插件,名字是PleaseROP。 MIPS交叉编译环境环境安装 buildroot是Linux平台上一个构建嵌入式Linux系统的框架。...Linux版本(因为我们编译出的MIPS交叉工具是需要在我们的主机上运行的) 5....MIPS栈溢出 这一部分主要描述MIPS中的栈溢出相关的知识,假设大家已经有一定的x86漏洞利用经验。首先是介绍MIPS汇编的一些和x86不一样的地方,其次是一个简单栈溢出漏洞的利用。...Mips 汇编基础 MIPS32寄存器分为两类:通用寄存器(GPR)和特殊寄存器。通用寄存器:MIPS体系结构中有32个通用寄存器,汇编程序中用$0~$31表示。

    1.7K50

    DLink RCE漏洞CVE-2019-17621分析

    1、环境搭建 运行环境安装配置之前须了解你所使用的Linux系统的版本以及Qemu的版本,因为这直接影响着你后续选择安装各种依赖包、mips qemu镜像等的版本,各种版本都对应上,最终系统才能正确运行...从站点https://people.debian.org/~aurel32/qemu/mips/下载debianmips qemu镜像,由于虚拟机是Ubuntu linux,下载debian_squeeze_mips_standard.qcow2...② 借助firmadyne工具运行固件 Firmadyne是一款自动化和可裁剪的嵌入式Linux系统固件分析框架,它支持系统固件逆向QEMU嵌入式系统模拟执行,使用其可模拟路由器固件、执行路由器。...尝试静态下使用IDA反汇编cgibin文件,然后F5查看伪代码,发现操作失败,故换用Ghidra(NSA发布的、基于Java开发的、适用于Windows、Mac和Linux的跨平台反汇编工具),发现可快速定位...genacgi_main()函数并查看伪码(貌似反汇编能力优于IDA?)

    2K30

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

    牛顿 这是向MIPS架构移植软件的问题系列之第二篇。上一篇《MIPS架构深入理解8-向MIPS架构移植软件之大小端问题》中,我们讨论了大小端对于移植代码的影响。...为此,MIPS架构提供了Cache指令,可以根据需要调用它们,消除这种内存和Cache的不一致性。...移植性比较好的操作系统,比如Linux,不管是复杂的、不可见的Cache,还是简单的Cache,都能很好的适配。即,Linux一般提供一组很完备的API,供驱动编写者使用。...所以,MIPS32/64提供了synci指令,它可以执行D-Cache的回写操作和I-Cache的失效操作。具体可以参考MIPS指令集参考。...比如说,Linux操作系统,多个虚拟地址可能都会访问一个物理页(共享库)。

    1.3K10
    领券