MIPS的32个寄存器 助记符 编号 作用 zero 0 恒为0 at 1 (assembly temporary)保留给汇编器使用 v0,v1 2-3 (values)子程序返回,即函数调用时的返回值 a0-a3 4-7 (arguments)子程序调用的前几个参数 t0-t7 8-15 (temporaries)临时变量,子程序使用时无需保存 t8-t9 24-25   s0-s7 16-23 (saved)子程序寄存器变量:子程序写入时必须保存 其值并在返回前恢复原值 k0-k1 26-2…
批量Load/Store指令用于实现在一组寄存器和一块连续的内存单元之间传输数据.也称为多寄存器寻址方式,即一条指令可以完成多个寄存器值的传送.这种寻址方式可以用一条指令最多完成传送16个通用寄存器的值,其语法格式为: LDM|STM{<Cond>} <addressing_mode> <Rn>{!},<registers>{^} 其中<addressing_mode> 可以有四种寻址方式: 1.IA(Increment After,事后递增方式…
今天调试程序,发现在windows和Linux下,diab编译的结果不一样,一个能跑一个不能跑.最后定位到了函数跳转上. 程序代码里的函数跳转写的是BAL,在windows下编译结果正常,在Linux下不正常. 在Linux下,把跳转指令改成了JAL,程序执行就对了. 从网上找了找相关资料,有说看See Mips Run的.在里面找到了一句话:“跳转调用指令,即JAL,注意不是BAL,后者属于分支调用.“ 可以看出来,如果跳函数的话,还是要用JAL比较对.…
由于MIPS各个版本之间的操作数会变,如果出现无法识别的情况 需要根据官方的MIPS instruction手册逐条核对,此处的版本为Rev.1 //******MIPS-55*********// parameter //SPECIAL OP LIST 5-0 ADDU = 'b100001, SUBU = 'b100011, ADD = 'b100000, SUB = 'b100010, AND = 'b100100, OR = 'b100101, XOR = 'b100110, NOR =…
LDR(load register)指令将内存内容加载入通用寄存器 STR(store register)指令将寄存器内容存入内存空间中 #define GPJ0CON 0xE0200240 _start: ldr r0, =0x11111111 // 将立即数/非法立即数,赋值给r0 ldr r1, =GPJ0CON // 将GPJ0CON的地址赋给r1 str r0, [r1] // 寄存器间接寻址.把r0中的数写入到r1中的数为地址的内存中去 ldr r0,[r1] //将r1的值赋给r0…
ARM指令分类及其寻址方式 一:ARM指令的分类 ARM指令集可以分为以下6类: •跳转指令: •数据处理指令: •程序状态寄存器(PSR)传输指令: •load/store指令: •协处理器指令: •异常中断产生指令: 二.ARM指令的一般编码格式 ARM指令字长为固定的32位.一条典型的ARM指令语法格式及编码格式如下: 语法格式: <opcode>{<cond>}{s}   <Rd>,<Rn>,<shifter_operand> •<…
上一篇计算机系统5-> 计组与体系结构2 | MIPS指令集(上)| 指令系统从顶层讲解了一个指令集 / 指令系统应当具备哪些特征和工作原理.这一篇就聚焦MIPS指令集(MIPS32),看看其汇编语句和机器语言是什么样子的. 参考资料: Computer Organization and Design the 5th Edition,即计算机组成与设计硬件软件接口第五版 龙芯杯MIPS指令系统规范手册 课件,由于是英文且只是老师的思路,所以是辅助参考 <计算机组成原理>谭志虎,HUST(…
计算机组成 3 指令系统体系结构 3.6 MIPS指令简介 MIPS秉承着指令数量少,指令功能简单的设计理念.那这样的设计理念是如何实现的呢?在这一节,我们就将来分析MIPS指令的特点. 相比于X86指令所提供的动辄上千页的指令说明,MIPS指令只用这两页纸就可以说清楚了. MIPS指令的基本格式就分为这三种:R型,I型和J型. R型指的是寄存器型: I型指的是立即数型: J型指的是转移型. 我们用这张表对MIPS的指令进行不同纬度的分类,横轴是按照指令的格式分为R型.I型和J型,纵轴则是根据指…
说明,本文的目的在于从宏观逻辑上介绍清楚绝大多数的字节码指令的含义以及分类 只要认真阅读本文必然能够对字节码指令集有所了解 如果需要了解清楚每一个指令的具体详尽用法,请参阅虚拟机规范 指令简介 计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程. 通常一条指令包括两方面的内容: 操作码和操作数,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址. 虚拟机的字节码指令亦是如此含义 class文件相当于JVM的机器语言 cla…
Atitit.java 虚拟机的构成 与指令分类 与 指令集合 以及字节码查看工具javjap 1.1. 虚拟机的构成 java虚拟机--处理器.堆栈.寄存器.指令系统. 1 1.2. 虚拟机执行过程1 1.3. 约有250个指令2 2. JVM指令助记符 分类2 2.1. 变量到操作数栈:2 2.2. 算数指令3 2.3. 移位指令3 2.4. 逻辑指令4 2.5. 流程跳转指令4 2.6. Oo指令4 2.7. 运算指令 5 3. 查看指令反编译工具6 3.1.   分析java语言特性的一…
1) ARM指令集 32位的 ARM指令和 16位 的Thumb指令 1,寄存器寻址 MOV R1, R2  //将寄存器R2的值传给寄存器R1 2,立即寻址 MOV R0, #0XFF00 //数据包含在指令中 3,寄存器偏移寻址 MOV R0, R2, LSL #3 //R2的值左移3位,结果放入 R0中 即 R0 = R2 * 8 LSL逻辑左移.  LSR逻辑右移.  ASL算术左移. ASR算术右移.  ROR循环右移.RRX带扩展的循环右移 4,寄存器间接寻址 LDR R1, [R2…
系列的上一篇计算机系统4-> 计组与体系结构1 | 基础概念与系统评估,学习了一些计算机的基础概念,将一些基本的计算机组成部分的功能和相互联系了解了一下,其中很重要的一个抽象思想就是软硬件的接口--指令集,这一篇就来具体地学习MIPS指令集. 参考资料: Computer Organization and Design the 5th Edition,即计算机组成与设计硬件软件接口第五版 课件,由于是英文且只是老师的思路,所以是辅助参考 <计算机组成原理>谭志虎,HUST(此书强推) &…
X86寄存器 ·x86寄存器分类: 8个通用寄存器:EAX.EBX.ECX.EDX.ESI.EDI.ESP.EBP 1个标志寄存器:EFLAGS 6个段寄存器:CS.DS.ES.FS.GS.SS 5个控制寄存器:CR0.CR1.CR2.CR3.CR4 8个调试寄存器:DR0.DR1.DR2.DR3.DR4.DR5.DR6.DR7 4个系统地址寄存器:GDTR.IDTR.LDTR.TR 其他寄存器:EIP.TSC等.   一.          通用寄存器 32位 16位 8位 EAX AX AH…
写在前面 本文是根据"MIPS Assembly Language Programming CS50 Discussion and Project Book. Daniel J. Ellard"总结的.其中有大量的翻译文体以及个人的看法想法,当然,内容没有书上那么详尽. 这一章节会涉及MIPS的变量的声明.数据的输入输出.取地址.分支跳转语句(用以实行循环.判断等),基本上对应于任何一门高级语言的最基本操作. 简介 机器语言 正如我们在前一章中所看到的,计算机指令可以表示为位序列.一般…
ARM指令教程 ARM汇编程序特点: l         所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通用寄存器来完成.因此代码中大量看到LDR,STR指令来传送值. l         ARM汇编语句中.当前语句很多时候要隐含的使用上一句的执行结果.而且上一句的执行结果,是放在CPSR寄存器里,(比如说进位,为0,为负…) CMP R0,R1 BNE NoMatch 比如上一句,BN…
LDM批量加载/STM批量存储指令可以实现一组寄存器和一块连续的内存单元之间传输数据. 允许一条指令传送16个寄存器的任意子集和所有寄存器,指令格式如下: LDM{cond}  mode  Rn{!}, reglist{^} STM{cond}  mode  Rn{!}, reglist{^} 主要用途:现场保护.数据复制.参数传送等,共有8中模式(前面4种用于数据块的传输,后面4种是堆栈操作)如下: (1)IA:每次传送后地址加4 (2)IB:每次传送前地址加4 (3)DA:每次传送后地址减4…
ARM汇编程序特点: l         所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通用寄存器来完成.因此代码中大量看到LDR,STR指令来传送值. l         ARM汇编语句中.当前语句很多时候要隐含的使用上一句的执行结果.而且上一句的执行结果,是放在CPSR寄存器里,(比如说进位,为0,为负…) CMP R0,R1 BNE NoMatch 比如上一句,BNE隐含的使用的上…
32位CPU所含有的寄存器有:4个数据寄存器(EAX.EBX.ECX和EDX)2个变址和指针寄存器(ESI和EDI)2个指针寄存器(ESP和EBP)6个段寄存器(ES.CS.SS.DS.FS和GS)1个指令指针寄存器(EIP)1个标志寄存器(EFlags) --------------------------------------------------1.数据寄存器 寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间.累加器可用于乘.除.输入/输出等…
http://blog.csdn.net/tanyouliang/article/details/6767011 LDR指令的格式: LDR{条件}   目的寄存器     <存储器地址> 作用:将 存储器地址 所指地址处连续的4个字节(1个字)的数据传送到目的寄存器中. LDR指令的寻址方式比较灵活,实例如下: LDR R0,[R1]                                                      :将存储器地址为R1的字数据读入寄存器R0. LDR…
ARM指令集可以分为跳转指令,数据处理指令,程序状态寄存器传输指令,LOAD/Store指令,协处理器指令和异常中断产生指令6类 ARM指令集的寻址方式 数据处理指令的操作数的寻址方式 字以及无符号字节的Load.Store指令的寻址方式 杂类Laod.Store指令的寻址方式 批量Load.Store指令的寻址方式 协处理器Load.Store指令的寻址方式 数据处理指令的操作数的寻址方式 立即数荀子,每个立即数有由一个8位的参数循环右移 偶数位得到,其中循环移位的位数由一个4位二进制的两倍表…
时至今日,终于将全部的计划55条MIPS指令在FPGA上全部验证完毕,通过这近一个月的不断的修改调试.修改调试,我对整个流程对MIPS有了深刻的体会和认识.借着刚刚现阶段任务的兴奋和短暂的空闲时间,将自己这段时间以来的心得体会记录下来,希望可以帮到感兴趣的同学.   首先我想说一下MIPS,最开始接触MIPS时,我还认为是百万指令集的缩写,百度了一下才知道是一家公司名,后来才知道这里所说的MIPS是一种体系结构.说实话,计组原学的不是很好,微机原理学的倒还行.但是对RISC的理解和认识也只是停留…
详解CPSR寄存器(ls_core) (2012-10-11 17:29:47) 转载▼ 标签: arm920t寄存器 cpsr cpu工作原理 分类: 第四章-踏入嵌入式领域之ARM 在介绍CPSR寄存器之前,让我们来想个问题.CPU执行一条指令的流程是这样的,CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码.它把指令分解成一系列的微操作,然后发出各种控制命令,执行微操作系列,从而完成一条指令的执行.在这个过程中,CPU执行了加.减.移位运算.想想看每次加.减.移位运算后…
五.微机CPU的指令系统 1.汇编语言指令格式 汇编语言的指令格式如下: 指令助忆符 [操作数1 [, 操作数2 [, 操作数3]]] [;注释] 指令助忆符体现该指令的功能,它对应一条二进制编码的机器指令.指令的操作数个数由该指令的确定,可以没有操作数,也可以有一个.二个或三个操作数.绝大多数指令的操作数要显式的写出来,但也有指令的操作数是隐含的,不需要在指令中写出. 当指令含有操作数,并要求在指令中显式地写出来时,则在书写时必须遵守: l 指令助忆符和操作数之间要有分隔符,分隔符可以是若干个…
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianlong4526888/article/details/27512629 NOTE:下面内容仅仅针对ARMv8. 问题一:ARMv8 branch指令格式及使用方法(<ARMv8ISA overview>中 page 25有相关叙述): 1. 无条件分支+马上数:直接跳转到某地址,不能跳转到寄存器 指令有两个:"b label"  "bl label"…
ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令.比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如:ldr r0, 0x12345678就是把0x12345678这个地址中的值存放到r0中.而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯片区别最大的地方.x86中没有ldr这种指令,因为x86的mov指令可以将数据从内存中移动到寄存器中.另外还有一个就是ldr伪指令,虽…
Arm指令,32位的指令集,一共有16条的基本指令,每条指令都可以按条件执行, 指令都是32bit的,高四位是条件码[31:28], Thumb指令,16位的指令集,执行效率比arm指令集要低,但是节省了系统的存储空间,兼容了16位的数据总线宽度的应用体系. thumb指令,相比较与arm代码,储存器的功耗也较低. thumb指令,基本都是无条件的,一共有18条基本指令,全部指令都是16bit. Thumb-2指令,由16bit.32bit的指令混合组成,一共有16条基本指令, BIC:ARM指…
计算机组成 3 指令系统体系结构 3.5 MIPS体系结构 MIPS是精简指令系统的代表,采用了与X86相反的设计理念,并引领了精简指令系统的潮流,那就让我们一起来看一看这究竟是怎么一回事. 要探讨MIPS指令系统,就得从它的设计者John Hennessy开始说起.Hennessy 1977年进入斯坦福大学,81年领导了RISC微处理器研究小组,他也被称为RISC的先驱.RISC是精简指令系统计算机的简称.与之相对,之前的计算机上的指令系统就被称为复杂指令系统,X86就是其中的代表.后来,He…
来源https://baike.baidu.com/item/%E5%AF%BB%E5%9D%80%E6%96%B9%E5%BC%8F/3210621?fr=aladdin 寻址方式就是处理器根据指令中给出的地址信息来寻找有效地址的方式,是确定本条指令的数据地址以及下一条要执行的指令地址的方法.在存储器中,操作数或指令字写入或读出的方式,有地址指定方式.相联存储方式和堆栈存取方式.几乎所有的计算机,在内存中都采用地址指定方式.当采用地址指定方式时,形成操作数或指令地址的方式称为寻址方式.寻址方式…
目录 32位CPU所含有的寄存器 数据寄存器 变址寄存器 指针寄存器 段寄存器 指令指针寄存器 标志寄存器 32位CPU所含有的寄存器 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间. 32位CPU有4…
MIPS汇编学习 mips汇编不同于x86汇编,属于精简指令集,常见于路由器等一些嵌入式设备中. mips汇编没有对堆栈的直接操作,也就是没有push和pop指令,mips汇编中保留了32个通用寄存器,但是不同于x86汇编,mips汇编中没有ebp/rbp寄存器. mips每条指令都用固定的长度,每条指令都是四个字节,所以内存数据的访问必须以32位严格对齐,这一点也不同于x86汇编. 通过一个demo,用mips-linux-gnu-gcc编译,通过IDA远程调试,来理解mips汇编中的一些概念…