加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 mips指令系统

mips指令系统.pdf

mips指令系统

流星
2012-11-27 0人阅读 举报 0 0 暂无简介

简介:本文档为《mips指令系统pdf》,可适用于IT/计算机领域

第五部分程序与指令系统数字逻辑与处理器基础程序与指令系统Accomplishments计算机性能评价MIPS体系结构基本概念Accomplishments一个排序算法的实例MIPS汇编语言程序设计MIPS模拟器计算机原理数字逻辑与处理器基础IO处理器编译器操作系统应用程序数字集成电路数据通路控制存储器硬件和电路软件及算法汇编其他软件课程和实验课程计算的实现电路基础实现计算的电路复杂数字系统图灵机模型无限长纸带读写头•图灵机只要根据每一时刻读写头读到的一个方格的信息和当前的内部状态对程序进行查表就可以确定下一时刻的内部状态和输出动作•具体的程序是一个列表也叫做规则表从控制器来理解计算机的通用性•UTMUniversalTuringMachine•通用图灵模型如何用一个通用电路实现多种计算任务?处理器指令集的任务!数据通路和控制的实现!什么是处理器指令集?•处理器只是在块硅晶片上所集成的超大规模的集成电路然而如此一颗精密的芯片为什么能够控制一个庞大而复杂的电脑系统呢?–这就是处理器所集成的指令集–所谓指令集就是用来计算和控制计算机系统的一套命令的集合而每一种新型的处理器在设计时就规定了一系列与硬件电路相配合的指令系统–指令集的先进与否也关系到处理器的性能发挥它也是处理器性能体现的一个重要标志计算机系统硬件软件接口•任何完整的计算机系统都是由硬件和软件两部分组成•ISA(InstructionSetArchitecture指令集体系结构)是计算机硬件与底层软件之间的接口它是程序员为使一个二进制机器语言程序正确运行所需要了解的属性ISA计算机软件计算机硬件机器语言•计算机硬件的基本功能就是执行指令指令在冯·诺伊曼计算机中由二进制数字进行编码•描述完成一个确定任务的指令序列称为程序•计算机的全部二进制机器指令组成了一种可供人与计算机进行交流的语言称为机器语言机器语言程序汇编语言•使用机器语言编写程序十分困难于是人们发明了用助记符表示指令的方法。助记符形式的指令的集合组成了汇编语言•汇编语言的助记符形式的指令必须翻译成机器语言二进制指令才能在计算机上执行实现这种翻译的程序称为汇编器(assembler)汇编语言源程序addi$s,$s,addi$s,$s,sw$s,($s)汇编语言汇编器汇编语言源程序机器语言程序addi$s,$s,addi$s,$s,sw$s,($s)C程序:s=高级语言•汇编语言与机器语言是一一对应的所以开发效率仍然十分低下于是人们发明了高级程序设计语言如FORTRAN、C等等•使高级语言程序在只能运行二进制机器指令的计算机上运行有两种途径:–编译将高级语言编写的程序翻译成等价的二进制指令序列来代替计算机执行等价的机器语言程序–解释以高级语言程序作为输入数据顺序地检查它的每一条语句并直接执行等价的机器语言指令序列这种方法称为解释例如MATLAB程序与指令系统Accomplishments计算机性能评价MIPS体系结构基本概念Accomplishments一个排序算法的实例MIPS汇编语言程序设计MIPS模拟器MIPS体系结构AccomplishmentsMIPS寻址方式MIPS指令格式概述MIPS过程调用MIPS指令系统MIPS体系结构•RISC是相对于CISC的•RISC的杰出代表有ARM、POWERPC、MIPS•CISC的处理器大家天天用intel&amd的x对于一条汇编语言指令来说有两个问题要解决•要指出进行什么操作•要指出大多数指令涉及的操作数和操作结果放在何处MIPS:无内部互锁流水级的微处理器refCh~MicroprocessorwithoutinterlockedpipedstagesMIPS:操作数名称实例注释个寄存器$s,…$s$t,…$t数据的快速定位算术运算指令的操作数必须在寄存器中个存储字存储器…存储器MIPS只能使用数据传送指令访问MIPS中使用字寻址相邻数据字的字地址相差常数操作数怎么办?通用寄存器的习惯用法和命名寄存器编号助记符用法zero永远为at用做汇编器的临时变量v,v用于过程调用时返回结果aa用于过程调用时传递参数tt临时寄存器在过程调用中被调用者不需要保存与恢复ttss保存寄存器。在过程调用中被调用者一旦使用这些寄存器时必须负责保存和恢复这些寄存器的原值,k,k通常被中断或异常处理程序使用用来保存一些系统参数gp全局指针globalpointer。一些运行系统维护这个指针来更方便的存取静态(static)和外部(extern)变量sp堆栈指针stackpointerfp帧指针framepointerra返回地址MIPS:操作数•寄存器为什么只有个?–因为电信号传输距离越远传输时间就越长寄存器太多将会延长时钟周期•存储器对齐限制:–MIPS中字的地址必须是的倍数地址数据存储器:Q:MIPS是大端(Bigendian)的还是小端的(Littleendian)?A:这是可以配置的一般来说使用大端模式和网络序相同地址数据存储器:地址数据MIPS体系结构AccomplishmentsMIPS寻址方式MIPS指令格式概述MIPS过程调用MIPS指令系统MIPS指令格式所有的MIPS指令都是位长简单性来自规则性Rformat:所有其他Iformat:用于有立即数的指令,lw,sw,beq,bneJformat:无条件跳转j,并连接jal•一条位的MIPSR型指令分为个字段:–=bitopcodersrtrdfunctshamt各段含义如下:操作码第个源操作数第个源操作数目标寄存器(放结果)移位量功能码选择字段op中操作的某种变体MIPS指令格式()R型指令PCALU数据通路immALUctrClkbusWRegWrbusAbusBRwRaRbbitRegistersRsRtRtRdRegDstExtenderMuximmALUSrcExtOpMuxMemtoRegClkDataInWrEnAdrDataMemoryMemWrInstruction<:><:><:><:><:>ImmRdRtRs=AdderAdderClkMuxPCSrcPCExtAdrInstMemoryMuxShamt:ALUsrc<:>控制无内部互锁:硬件上无数据相关问题例如ALU的数据直接来自寄存器无需等待其他逻辑模块(这些模块的输入数据来自ALU的输出)的数据输出add$,$,$二进制指令格式:十进制指令格式:进制:Ahex进制:,,tenhexMIPS指令格式()R型指令举例•一条位的MIPSI型指令划分为个字段:=bitopcodersrtaddress各段含义如下:操作码第个源操作数寄存器目标寄存器(放结果)地址相对基址偏移量MIPS指令格式()I型指令装入指令lw、存储指令sw、分支指令和立即数运算指令MIPS指令格式()I型指令•装入指令lw、存储指令sw的格式–数据装入lw:Rt=MemRsAddress–数据存储sw:MemRsAddress=RtOpRsRtAddress位位位位例:装入存储指令lw$s,($s)hex符号扩展Ehex•只有装入lw(从内存中读出数据)和存储sw(写入内存中)指令实现对内存的访问•存储器寻址方式:c($rx)寄存器rx的地址值立即数c•例:分支指令–if(Rs<relation>Rt)goto(PC)Addressbeq$t,$t,Target–分支指令采用的寻址方式为PC相对寻址分支目标的地址是PC与指令中的偏移量之和OpRsRtAddress位位位位MIPS指令格式()I型指令PCALU数据通路immALUctrClkbusWRegWrbusAbusBRwRaRbbitRegistersRsRtRtRdRegDstExtenderMuximmALUSrcExtOpMuxMemtoRegClkDataInWrEnAdrDataMemoryMemWrInstruction<:><:><:><:><:>ImmRdRtRs=AdderAdderClkMuxPCSrcPCExtAdrInstMemoryMuxShamt:ALUsrc<:>控制例:addi$,$,opcode=(具体是什么操作)rs=(操作数寄存器)rt=(目的寄存器)immediate=(默认是十进制数)请将指令翻译成机器码MIPS指令格式()I型指令举例十进制指令格式:二进制指令格式:十六进制表示:DFFCEhex十进制表示:,,ten•J型指令格式:bitsbitsopcodetargetaddress每部分的名字是:关键点:必须让opcode部分与R和I型指令一致以便于电路理解执行其他字段都节省出来给跳转的目的地址用以表示很大的跳转范围MIPS指令格式()J型指令•例:跳转指令的格式–跳转指令采用伪直接寻址跳转地址为指令中的位常数与PC(programcounter)中的高位拼接得到例:jhexAddress位位MIPS指令格式()J型指令•总之:–新的PC={PC,目标地址,}•一定要明白上面的每一项是从哪里来的!•Note:{,,}表示合并{bits,bits,bits}=bitaddress–{,,}=–Note:书上用||,Verilog里用{,,}MIPS指令格式()J型指令?关于MIPS指令格式的思考•指令格式为什么要分三类呢–所有指令长度相同都是位–要让每一条指令刚好合适充分发挥作用–……提示:和ALU及指令译码电路设计有关MIPS体系结构AccomplishmentsMIPS寻址方式MIPS指令格式概述MIPS过程调用MIPS指令系统MIPS寻址方式寄存器寻址立即数寻址基址或偏移寻址PC相对寻址伪直接寻址指令MIPS寻址方式()寄存器寻址ByteHalfwordWordRegistersMemoryMemoryWordMemoryWordRegisterRegisterImmediateaddressingRegisteraddressingBaseaddressingPCrelativeaddressingPseudodirectaddressingoprsrtoprsrtoprsrtopoprsrtAddressAddressAddressrdfunctImmediatePCPCByteHalfwordWordRegistersMemoryMemoryWordMemoryWordRegisterRegisterImmediateaddressingRegisteraddressingBaseaddressingPCrelativeaddressingPseudodirectaddressingoprsrtoprsrtoprsrtopoprsrtAddressAddressAddressrdfunctImmediatePCPC例:MIPS算术运算指令的操作数必须从个位寄存器中选取add$t,$s,$s#寄存器$t的内容为ghadd$t,$s,$s#寄存器$t的内容为ijsub$s,$t,$t#寄存器$s的内容为(gh)(ij)MIPS寻址方式()立即数寻址ByteHalfwordWordRegistersMemoryMemoryWordMemoryWordRegisterRegisterImmediateaddressingRegisteraddressingBaseaddressingPCrelativeaddressingPseudodirectaddressingoprsrtoprsrtoprsrtopoprsrtAddressAddressAddressrdfunctImmediatePCPC以常数作为操作数无须访问存储器就可以使用常数因为常数操作数频繁出现所以在算术指令中加入常数字段比从存储器中读取常数快得多Lw$t,AddrConstant($zero)#$t=常数add$sp,$sp,$t#$sp=$sp$t($t==)addi$sp,$sp,#$sp=$sp加快对常见情况的处理PCALU数据通路immALUctrClkbusWRegWrbusAbusBRwRaRbbitRegistersRsRtRtRdRegDstExtenderMuximmALUSrcExtOpMuxMemtoRegClkDataInWrEnAdrDataMemoryMemWrInstruction<:><:><:><:><:>ImmRdRtRs=AdderAdderClkMuxPCSrcPCExtAdrInstMemoryMuxShamt:ALUsrc<:>控制MIPS寻址方式()立即数寻址ByteHalfwordWordRegistersMemoryMemoryWordMemoryWordRegisterRegisterImmediateaddressingRegisteraddressingBaseaddressingPCrelativeaddressingPseudodirectaddressingoprsrtoprsrtoprsrtopoprsrtAddressAddressAddressrdfunctImmediatePCPC怎样把一个位长的常数装入寄存器$s中?有长度限制addi为位Lui$s,#$s=addi$s,$s,#$s=拆散和重装大常数还可以这样完成:LoadUpperImmediateori$s,$,xsll$s,$s,#$s=xMIPS寻址方式()基址或偏移寻址ByteHalfwordWordRegistersMemoryMemoryWordMemoryWordRegisterRegisterImmediateaddressingRegisteraddressingBaseaddressingPCrelativeaddressingPseudodirectaddressingoprsrtoprsrtoprsrtopoprsrtAddressAddressAddressrdfunctImmediatePCPC操作数在存储器中且存储器地址是某寄存器与指令中某常量的和Lw$t,($s)#$s中装的是存储器中的地址•只有装入lw和存储sw指令实现对内存的访问•存储器寻址方式:c(rx)立即数c寄存器rx的值MIPS寻址方式()PC相对寻址例:条件分支指令bne$s,$s,Exit#如果$s不等于$s则跳转到ExitExit位位位位程序计数器=PC寄存器分支地址当前指令地址±个字范围内的地址ByteHalfwordWordRegistersMemoryMemoryWordMemoryWordRegisterRegisterImmediateaddressingRegisteraddressingBaseaddressingPCrelativeaddressingPseudodirectaddressingoprsrtoprsrtoprsrtopoprsrtAddressAddressAddressrdfunctImmediatePCPCMIPS寻址方式()PC相对寻址问题:为什么选PC寄存器?因为几乎所有的条件分支指令都是跳转到附近的地址问题:如何处理位无法表达的远距离分支?插入一个无条件跳转到分支目标地址的指令把分支指令中的条件变反以决定是否跳过该指令Bne$s,$s,Lbeq$s,$s,LjLL:……L:……<|LPC|<MIPS寻址方式()伪直接寻址ByteHalfwordWordRegistersMemoryMemoryWordMemoryWordRegisterRegisterImmediateaddressingRegisteraddressingBaseaddressingPCrelativeaddressingPseudodirectaddressingoprsrtoprsrtoprsrtopoprsrtAddressAddressAddressrdfunctImmediatePCPC跳转地址=PC中原高位I指令中的位Ij#跳转到PCI问题:PC高位限制了跳转的范围如何跳出高位限制的范围?问题:目的地址比当前的PC地址小怎么办?MIPS体系结构AccomplishmentsMIPS寻址方式MIPS指令格式概述MIPS过程调用MIPS指令系统MIPS指令系统()数据处理类(算术逻辑运算指令)()数据传送类(装入存储指令)()控制类(分支与跳转指令)算术运算指令•加法add$t,$t,$t#$t=$t$t•减法sub$t,$t,$t#$t=$t$t注释寄存器以$符号开始•编译C语言的赋值语句f=(gh)–(ij)算术运算指令addt,g,haddt,i,jsubf,t,tadd$t,$s,$sadd$t,$s,$ssub$s,$t,$t假设变量f、g、h、i、j分别分配给寄存器$s~$s临时变量t、t分别分配给寄存器$t、$t算术运算指令•加位有符号立即数addi$t,$t,#$t=$t•MIPS没有减立即数的指令如何实现减立即数操作?逻辑运算指令and$t,$t,$t#$t=$t$tor$t,$t,$t#$t=$t|$txor$t,$t,$t#$t=$t$tnor$t,$t,$t#$t=~($t|$t)–如何实现NOT运算?•立即数逻辑运算andi$t,$t,ori$t,$t,xori$t,$t,逻辑运算指令•移位运算移位量为立即数逻辑左移sll$t,$t,#$t=$t<<shiftleftlogical逻辑右移srl$t,$t,#$t=$t>>shiftrightlogical算术右移sra$t,$t,#$t=$t>>shiftrightarithm•移位运算移位量在某个寄存器中sllv$t,$t,$t#$t=$t<<($t)srlv$t,$t,$t#$t=$t>>($t)srav$t,$t,$t#$t=$t>>($t)比较指令•比较两个寄存器的内容并根据比较的结果设置第三个寄存器slt$t,$t,$t#if($t<$t)$t=#else$t=sltu$t,$t,$t#无符号比较•寄存器与立即数比较slti$t,$t,#与立即数比较sltui$t,$t,#与无符号立即数比较MIPS指令系统()数据处理类(算术逻辑运算指令)()数据传送类(装入存储指令)()控制类(分支与跳转指令)装入存储指令•实现内存与寄存器之间的数据传送lw$t,($t)#Loadwordsw$t,($t)#Storeword–MIPS只支持基址(变址)位移量的内存寻址方式–存放基址的寄存器称为基址寄存器指令中的常量称为位移量栈操作•虽然MIPS有个通用寄存器但是在某些情况下(例如子程序调用)仍然需要将寄存器的内容换出到内存中在这种情形下栈是保存寄存器内容的理想场所•MIPS有一个$sp寄存器可以用做栈指针•将数据放入栈中称为压栈(PUSH)从栈中取出数据称为出栈(POP)MIPS内存分配约定$gpffffffchex栈动态数据$gphex静态数据(常量和其他静态变量的存储)hex正文数据(机器代码的存储区域)pchex保留段不同MIPS软件其地址不一样栈操作•例将$s、$s、$s寄存器的内容压入栈addi$sp,$sp,sw$s,($sp)sw$s,($sp)sw$s,($sp)高地址低地址$sp压栈前高地址低地址$sp压栈后$s的内容$s的内容$s的内容习惯上栈按照从高到到低的地址顺序增长($sp)($sp)($sp)内存栈操作•出栈操作lw$s,($sp)lw$s,($sp)lw$s,($sp)addi$sp,$sp,高地址低地址$sp出栈前高地址低地址$sp出栈后$s的内容$s的内容$s的内容装入高位立即数•装入高位立即数(loadupperimmediate)lui$t,•例将位立即数xabcd装入$t寄存器lui$t,xori$t,$t,xabcdMIPS指令系统()数据处理类(算术逻辑运算指令)()数据传送类(装入存储指令)()控制类(分支与跳转指令)分支(branch)指令beq$t,$t,Target#如果$t=$t则分支执#行标号为Target的指令bne$t,$t,Target#如果$t!=$t则分支执#行标号为Target的指令•分支指令与比较指令相结合可以实现各种条件分支:相等、不等、小于、小于或等于、大于、大于或等于跳转(jump)指令•无条件分支jLable#无条件跳转到标号Lable处分支指令的应用•例unsignedinti,j…If(i<=j)f=ghelsef=ghsltu$t,$s,$sbeq$t,$zero,Elsesub$s,$s,$sjExitElse:add$s,$s,$sExit:…汇编代码假设变量f、g、h、i、j分配给寄存器$s~$s分支指令的应用•例while(savei==k)i=Loop:sll$t,$s,add$t,$t,$slw$t,($t)bne$t,$s,Exitaddi$s,$s,jLoopExit:…汇编代码假设变量i、k对应寄存器$s和$s数组save的基址存放在$s中MIPS体系结构AccomplishmentsMIPS寻址方式MIPS指令格式概述MIPS过程调用MIPS指令系统过程调用•MIPS的过程调用遵循如下约定:–通过$a~$a四个参数寄存器传递参数–通过$v~$v两个返回值寄存器传递返回值–通过$ra寄存器保存返回地址•子程序调用通过跳转与链接指令jal进行jalProcedure#将返回地址保存在$ra寄存器中#程序跳转到过程Procedure处执行•子程序返回通过寄存器跳转指令jr进行jr$ra#跳转到寄存器指定的地址叶过程不调用其他过程的过程intleafexample(intg,inth,inti,intj){intff=(gh)–(ij)returnf}leafexample:addi$sp,$sp,sw$t,($sp)sw$t,($sp)sw$s,($sp)add$t,$a,$aadd$t,$a,$asub$s,$t,$tadd$v,$s,$zerolw$s,($sp)lw$t,($sp)lw$t,($sp)addi$sp,$sp,jr$ra将栈指针指向低地址准备将数据写入内存将个寄存器中的数据写入内存将参数寄存器传递的g和h相加将参数寄存器传递的i和j相加保存寄存器s中的数据=(gh)(ij)返回寄存器v中的数据=(gh)(ij)将个寄存器中的数据从内存中读出将栈指针指向高地址跳转到ra寄存器保存的返回地址叶过程intleafexample(intg,inth,inti,intj){intff=(gh)–(ij)returnf}leafexample:addi$sp,$sp,sw$t,($sp)sw$t,($sp)sw$s,($sp)add$t,$a,$aadd$t,$a,$asub$s,$t,$tadd$v,$s,$zerolw$s,($sp)lw$t,($sp)lw$t,($sp)addi$sp,$sp,jr$ra临时寄存器不必保存保存寄存器必须保存嵌套过程–如果只有叶过程情况非常简单但现实是残酷的–假设主程序调用过程A参数为时将存入$a中jalA–再假设过程A调用过程B参数为时同样存入$a导致$a使用上的冲突嵌套过程调用–主调过程将调用后还需要使用的参数寄存器$a~$a和临时寄存器$t~$t压栈–被调过程将返回地址寄存器和在被调过程中修改了的保存寄存器$s~$s压栈ProcA的栈空间ProcB的栈空间ProcC的栈空间…高地址低地址栈增长方向ProcA调用ProcB调用ProcC从ProcC返回从ProcB返回从ProcA返回帧指针fp•过程帧:栈中包含过程保存的寄存器和局部变量的段•帧指针:指向过程帧的第一个字–在过程中提供用于局部存储器引用的稳定的基寄存器–过程中栈指针可以修改但帧指针不变可通过帧指针方便地引用栈内所有变量–GNUMIPSC编译器使用了帧指针(framepointer),而SGI的C编译器没有使用而把这个寄存器当作保存寄存器使用($s),这节省了调用和返回开销但增加了代码生成的复杂性$fp$sp$fp保存的参数寄存器保存的返回地址保存的保存寄存器$sp本地数组和结构$fp$sp嵌套过程调用•计算n!fact:addi$sp,$sp,sw$ra,($sp)sw$a,($sp)slti$t,$a,beq$t,$zero,Laddi$v,$zero,addi$sp,$sp,jr$raL:addi$a,$a,jalfactlw$a,($sp)lw$ra,($sp)addi$sp,$sp,mul$v,$a,$vjr$raintfact(intn){if(n<)returnelsereturn(n*fact(n))}fact被调用将返回地址和参数寄存器写入内存参数n<n,转向Ln<,返回子程序返回到jal之后nn=n调用fact从内存中读出参数n和返回地址nfact(n)•框架指针$fp指向框架的第一个字通常是保存的参数寄存器•栈指针$sp指向栈顶在程序执行的过程中栈指针有可能改变•因此通过固定的框架指针来访问变量要比用栈指针更简便•如果一个过程的栈中没有局部变量编译器将不设置和恢复框架指针以节省时间•当需要框架指针时以调用时的$sp值作为框架指针的初值调用返回时根据$fp恢复$sp值程序与指令系统Accomplishments计算机性能评价MIPS体系结构基本概念Accomplishments一个排序算法的实例MIPS汇编语言程序设计MIPS模拟器计算机性能评价计算机性能定义•对计算机性能进行比较时最基本的标准就是时间标准执行同样的程序所需时间最短的计算机就是最好的计算机执行时间性能=refCh计算机性能评价CPU执行时间•对于多任务系统应该从响应时间中去除因为等待IO操作而花去的时间和CPU执行其他程序所花费的时间为此引入CPU执行时间的概念CPU执行时间=CPU时钟周期数时钟周期CPU时钟周期数时钟频率CPU时钟周期数=程序指令数每条指令平均时钟周期数每条指令平均时钟周期数CPI(clockcycleperinstruction)=CPU执行时间=指令数CPI时钟周期计算机性能评价CPI•执行不同的指令所需的时钟周期是不同的简单的指令需要较少的时钟周期复杂的指令需要较多的时钟周期–Pi第i类指令出现的频度–CPIi执行第i类指令所需的时钟周期niiiPCPICPI计算机性能评价影响计算机性能的因素CPU执行时间=指令数CPI时钟周期影响因素影响算法指令数、CPI程序设计语言指令数、CPI编译器指令数、CPIISA指令数、CPI、时钟周期硬件实现CPI、时钟周期找一找:findthebestmismatch!测试时的选择:A测试方法B编译器技术C硬件技术性能有关的参数:I指令数IICPIIII时钟频率ABCBACACBCABBCACBAIIIIII测试时的选择对于每一项参数来说哪个影响最小?影响计算机性能的因素•指令数–取决于指令集体系结构(ISA)与指令集的具体实现无关–编译器也对指令数有很大影响•CPI–机器的实现细节(存储系统结构、处理器结构)–测试程序包含的各类指令的组成–编译器:充分利用硬件资源、优化分配寄存器(统计意义下影响相对较小)•时钟周期–与机器的实现细节密切相关CPU执行时间=指令数CPI时钟周期计算机性能评价提高计算机性能的途径•通过减少公式中任意一项来提高处理器的性能•但是公式中的三项并不是相互独立的它们之间有着复杂的联系减少三项中

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/17

mips指令系统

仅供在线阅读

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利