版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM体系结构与ARM指令集
ARM体系结构与ARM指令集1
ARM体系结构与ARM指令集ARM体系结构概览ARM编程模型ARM指令集ARM的JTAG调试结构
ARM体系结构与ARM指令集ARM体系结构概览2微机应用新技术第四部分第三章--ARM体系结构与指令集3ARMLtd成立于1990年11月前身为Acorn计算机公司AdvanceRISCMachine(ARM)主要设计ARM系列RISC处理器内核授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片IP(IntelligenceProperty)另外也提供基于ARM架构的开发设计技术软件工具,评估板,调试工具,应用软件,总线架构,外围设备单元,等等ARMLtd成立于1990年11月4ARMOfficesWorldwide800+雇员全球EnglandCambridge,Maidenhead,Sheffield,BlackburnGermanyMunich FranceParis,SophiaAntipolisKoreaSeoulUSSeattle,LosGatos,WalnutCreek,Austin,Boston,SanDiegoChinaTaiwanandShanghaiJapanShin-Yokohama(Tokyo)ARMOfficesWorldwide800+雇员En5ARMPartnershipModelARMPartnershipModel6ARM即AdvancedRISCMachines的缩写。1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州SanJoseVLSI技术公司制造。20世纪80年代后期,ARM很快开发成Acorn的台式机产品,形成英国的计算机教育基础。1990年成立了AdvancedRISCMachinesLimited。20世纪90年代,ARM32位嵌人式RISC(ReducedInstructionSetComputer)处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。
ARM的发展历程-1ARM即AdvancedRISCMachines的缩写。732位RISC处理器受到青睐,领先的是ARM嵌入式微处理器系列。ARM公司虽然只成立10多年,但在1999年因移动电话火爆市场,其32位RISC处理器占市场份额超过了50%,2001年初,ARM公司的32位RISC处理器市场占有率超过了75%。ARM公司是知识产权供应商,是设计公司。由合作伙伴公司来生产各具特色的芯片。ARM的发展历程-132位RISC处理器受到青睐,领先的是ARM嵌入式微处理器系8ARM的发展历程-1ARM公司商业模式的强大之处在于其价格合理,全世界范围有超过100个合作伙伴--包括半导体工业的著名公司。ARM公司专注于设计,其内核耗电少、成本低、功能强,特有16/32位双指令集。ARM已成为移动通信、手持计算、多媒体数字消费等嵌入式解决方案的RISC标准。
在所有ARM处理器系列中,ARM7处理器系列应用最广,采用ARM7处理器作为内核生产芯片的公司最多。ARM的发展历程-1ARM公司商业模式的强大之处在于其价格合9ARM的发展历程-21991-ARM推出第一款RISC嵌入式微处理器核ARM61993-ARM推出
ARM7核1995–ARM的
Thumb扩展指令集结构为16位系统增加了32位的性能,提供业界领先的代码密度ARM的发展历程-21991-ARM推出第一款RISC10ARM的发展历程-3ARM的发展历程-311ARM处理器的3大特点如下:小体积、低功耗、成本低、高性能;16位/32位双指令集;全球众多的合作伙伴。当前ARM体系结构的扩充包括:Thumb:16位指令集,用以改善代码密度;DSP:用于DSP应用的算术运算指令集;Jazeller:允许直接执行Java代码的扩充。ARM处理器系列提供的解决方案包括:在无线、消费电子和图像应用方面的开放平台;存储、自动化、工业和网络应用的嵌入式实时系统;智能卡和SIM卡的安全应用。ARM处理器的特点ARM处理器的3大特点如下:ARM处理器的特点12ARM授权费IPARM创造和设计IPPartner产品,例如:芯片Partner把ARMIP和其他IP集成进产品OEMCustomer版权费单价OEM用来自ARMPartner的芯片设计制造最终用户产品业务拓展
/市场格局ARM的业务模型ARM授权费IPARM创造和Partner产品,例如:芯片13ARM发展SA-110ARM7TDMI4T1支持Halfword和signedhalfword/byte和Systemmode支持Thumb指令集24ARM9TDMISA-1110ARM720TARM940T改良的ARM/Thumb交互作用以及CLZ指令5TESaturatedmathsDSPmultiply-accumulateinstructionsXScaleARM1020EARM9E-SARM966E-S3早期的ARMsARM9EJ-S5TEJARM7EJ-SARM926EJ-SJazelle支持Java字节码
6ARM11SIMDSISIMDMDSSIMDARM发展SA-110ARM7TDMI4T1支持Halfwo14ARM微处理器微处理器核:ARM6,ARM7,ARM9,ARM10,ARM11扩展:Thumb,DSP,SIMD,Jazelleetc.其它IP核:UART,GPIO,memorycontrollers,etcARM微处理器微处理器核:ARM6,ARM7,ARM15ARM核命名的含义
ARM核命名的含义16ARMCore(ARM核)
处理器核/整数核(ProcessorCore/IntegerCore):ARM7TDMI,ARM9TDMI,ARM9E-S,ARM10TDMI,ARM10E等。ARMCPU核(ARMCPUCores):ARM710T/720T/740T,ARM920T/940T,ARM946E-S,ARM966E-S,ARM1020E等。基于ARMCoreCPU的应用处理器,比如:Intel的pxa25x,Philip的lpc22xx系列,Samsung的S3C44B0等。ARMCore(ARM核)处理器核/整数核(Proc17ARM7T和ARM7EFamilyARM7T和ARM7EFamily18ARM7系列的升级ARM7系列的升级19ARM9FamilyARM9Family20ARM9系列的升级ARM9系列的升级21ARM体系结构版本
-1Version1(obsolete)基本数据处理字节,字以及多字load/store软件中断26bit地址总线Version2(obsolete)Multiply&Multiply-accumulate支持协处理器支持线程同步26bit地址总线ARM体系结构版本-1Version1(obsole22ARM体系结构版本
-2V3版本推出32位寻址能力,结构扩展变化为T—16位压缩指令集M—增强型乘法器,产生全64位结果(32X3264or32X32+6464)V4版本增加了半字load和store指令V5版本改进了ARM和Thumb之间的交互,结构扩展变化为:E---增强型DSP指令集,包括全部算法操作和16位乘法操作J----支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能ARM体系结构版本-2V3版本推出32位寻址能力,结构扩23ARM体系结构更新ARM体系结构更新24体系结构变化
–1*THUMB指令集
(‘T’)THUMB指令集:32位ARM指令集的子集,按16位指令重新编码代码尺寸小
(upto40%compression)简化设计体系结构变化–1*THUMB指令集(‘T’)25体系结构变化
-2长乘法指令
(‘M’)32x32=64bit.提供全64位结果增强DSP指令集
(‘E’)可附加在ARM中的DSP指令64bit转换在v5版本中第一次推出处理器内核的变化D:在片调试.处理器可响应调试暂停请求I:EmbeddedICE.支持片上断点调试体系结构变化-2长乘法指令(‘M’)26体系结构变化
-3ARMDSP指令集对于音频DSP应用提供高达70%的处理速度Jazelle提供比基于软件的JAVA虚拟机(JVM)更高的性能
与非JAVA加速核相比,提供8倍JAVA加速性能和降低80%的功耗139字节码直接在硬件上执行,88个字节码在软件上执行体系结构变化-3ARMDSP指令集27
ARM体系结构与ARM指令集ARM体系结构概览ARM编程模型ARM指令集ARM的JTAG调试结构
ARM体系结构与ARM指令集ARM体系结构概览28指令流水线为增加处理器指令流的速度,ARM7系列使用3级流水线.允许多个操作同时处理,比逐条指令执行要快。PC指向正被取指的指令,而非正在执行的指令FetchDecodeExecute从存储器中读取指令解码指令寄存器读(从寄存器Bank)移位及ALU操作寄存器写(到寄存器Bank)PC PCPC-4 PC-2PC-8 PC-4ARM Thumb指令流水线为增加处理器指令流的速度,ARM7系列使用3级流29处理器的工作状态ARM7TDMI处理器有两种工作状态:ARM-32-bit,按字排列的ARM指令集Thumb-16-bit,按半字排列的Thumb指令集ARM7TDMI核的操作状态可能通过BX指令(分支和交换指令)在ARM状态和Thumb状态之间切换例:从ARM状态切换到Thumb状态:LDRR0,=Label+1BXR0从Thumb状态切换到ARM状态:LDRR0,=LabelBXR0处理器的工作状态ARM7TDMI处理器有两种工作状态:例:30存储器模式*大端模式字数据的高位字节存储在低地址中字数据的低字节则存放在高地址中小端模式低地址中存放字数据的低字节高地址中存放字数据的高字节3124
2316
158
70字地址11109887654432100低地址高地址3124
2316
158
70字地址89101184567401230低地址高地址存储器模式*大端模式3124231615870字地址131TheARM可以用little/bigendian格式存取数据.r0=0x11223344STRr0,[r1]LDRBr2,[r1]r1=0x100Memory32100123ByteLane312423161587011223344312423161587011223344312423161587011223344312423161587000000044312423161587000000011LittleendianBigendianR2=0x44R2=0x11Formoreinformation,see:“ApplicationNote61:BigandLittleEndianByteAddressing”32TheARM可以用little/bigendian数据和指令类型ARM采用的是32位架构.ARM约定:Byte: 8bitsHalfword:16bits(2byte)Word: 32bits(4byte)大部分ARMcore提供:ARM指令集(32-bit)Thumb指令集(T变种)(16-bit)Jazellecores支持Javabytecode(J变种,4TEJ)数据和指令类型ARM采用的是32位架构.33处理器工作模式ARM有7个基本工作模式:1、User:非特权模式,大部分任务执行在这种模式正常程序执行的模式2、FIQ:当一个高优先级(fast)中断产生时将会进入这种模式高速数据传输和通道处理3、IRQ:当一个低优先级(normal)中断产生时将会进入这种模式通常的中断处理4、Supervisor:当复位或软中断指令执行时将会进入这种模式供操作系统使用的一种保护模式5、Abort:当存取异常时将会进入这种模式虚拟存储及存储保护6、Undef:当执行未定义指令时会进入这种模式软件仿真硬件协处理器7、System:使用和User模式相同寄存器集的特权模式特权级的操作系统任务34处理器工作模式ARM有7个基本工作模式:34寄存器组织
–1*寄存器组织–1*35寄存器
-237寄存器31个通用32位寄存器,包括程序计数器PC未分组寄器R0-R7分组寄存器R8-R14程序计数器PC(R15)6个状态寄存器15通用寄存器
(R0toR14),以及1或者2个状态寄存器和程序计数器在任何时候都是可以访问的可访问的寄存器取决于处理器的模式其它寄存器(thebankedregisters)的状态在支持IRQ,FIQ,管理员,中止和未定义模式处理时被切换寄存器-237寄存器36寄存器
-3R0到
R15可以直接访问R0到
R14是通用寄存器R13:堆栈指针
(sp)(通常)每种处理器模式都有单独的堆栈R14:链接寄存器(lr)R15包含程序计数器
(PC)CPSR–当前程序状态寄存器,包括代码标志状态和当前模式位5个SPSRs--(程序状态保存寄存器)当异常发生时保存CPSR状态寄存器-3R0到R15可以直接访问37程序状态寄存器
-1ARM7TDMI包含当前程序状态寄存器
(CPSR),加上5个程序状态保存寄存器SPSR,当异常发生时,用于保存CPSR的状态这些寄存器的功能是:保存ALU当前操作信息控制允许和禁止中断设置处理器操作模式程序状态寄存器-1ARM7TDMI包含当前程序状态寄存38程序状态寄存器格式
程序状态寄存器格式39程序状态寄存器条件位:N=1-结果为负,0-结果为正或0Z=1-结果为0,0-结果不为0C=1-进位,0-借位V=1-结果溢出,0结果没溢出Q位:仅ARM5TE/J架构支持指示增强型DSP指令是否溢出J位仅ARM5TE/J架构支持J=1:处理器处于Jazelle状态中断禁止位:I=1:禁止IRQ.F=1:禁止FIQ.TBit仅ARMxT架构支持T=0:处理器处于ARM状态T=1:处理器处于Thumb状态Mode位(处理器模式位):0b10000 User0b10001 FIQ0b10010 IRQ0b10011 Supervisor0b10111 Abort0b11011 Undefined0b11111 System2731NZCVQ2867IFTmode1623
815
54024fsxc
UndefinedJ程序状态寄存器条件位:中断禁止位:2731NZCV40程序状态寄存器PSR的模式位程序状态寄存器PSR的模式位41Thumb状态下的寄存器组织
Thumb状态下的寄存器组织42当处理器执行在ARM状态:所有指令32bits宽所有指令必须word对齐所以pc值由bits[31:2]决定,bits[1:0]未定义(所以指令不能halfword/byte对齐).当处理器执行在Thumb状态:所有指令16bits宽所有指令必须halfword对齐所以pc值由bits[31:1]决定,bits[0]未定义(所以指令不能byte对齐).当处理器执行在Jazelle状态:所有指令8bits宽处理器执行word存取一次取4条指令程序指针PC(r15)43当处理器执行在ARM状态:程序指针PC(r15)43异常
-1异常——内部或外部中断源产生并引起处理器处理一个事件,如外部中断或试图执行未定义指令都会引起异常。处理异常之前必须保留处理器的状态异常类型FIQIRQ(InterruptReQuest)未定义指令预取中止数据中止复位软件中断Softwareinterrupt通过软件中断产生进行管理员模式中获得通常要求特殊的管理功能,如操作系统支持异常-1异常——内部或外部中断源产生并引起处理器处理一个44异常
-2异常类型未定义的指令陷井当ARM接受到一条不能处理的指令,ARM把这条指令提供给任何一个协处理器执行如果协处理器可以执行这条指令但此时协处理器忙,ARM将等待直到协处理器准备好或中断发生如果没有协处理器处理这条指令,那么ARM将处理未定义的指令陷井异常优先级(1)Reset(highestpriority)(2)Dataabort(3)FIQ(4)IRQ(5)Prefetchabort(6)未定义指令,Softwareinterrupt(最低优先级)异常-2异常类型45异常
-3只要产生异常就会导致正常和程序流程被临时停止,例如外围中断服务程序在异常被处理前,当前的处理器状态必须被保存,以便处理程序完成后,最后的程序可以被恢复.异常-3只要产生异常就会导致正常和程序流程被临时停止,例46异常向量异常向量47VectorTable异常处理当异常产生时,ARMcore:拷贝CPSR到SPSR_<mode>设置适当的CPSR位:改变处理器状态进入ARM态改变处理器模式进入相应的异常模式设置中断禁止位禁止相应中断(如需要)保存返回地址到LR_<mode>设置PC为相应的异常向量返回时,异常处理需要:从SPSR_<mode>恢复CPSR从LR_<mode>恢复PCNote:这些操作只能在ARM态执行.Vectortablecanbeat
0xFFFF0000onARM720T
andonARM9/10familydevicesFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x0048VectorTable异常处理当异常产生时,ARMco进入异常的操作-2R14_<Exception_Mode>=ReturnLinkSPSR_<Exception_Mode>=CPSRCPSR[4:0]=ExceptionModeNumberCPSR[5]=0;当运行于ARM状态时IF<Exception_Mode>==ResetorFIQthen;当响应FIQ异常时,禁止新的FIQ异常CPSR[6]=1;CPSR[7]=1;PC=ExceptionVectorAddress进入异常的操作-2R14_<Exception_Mode>=49例子:用户模式到
FIQ模式*spsr_fiqcpsrr7r4r5r2r1r0r3r6r15(pc)r14_fiqr13_fiqr12_fiqr10_fiqr11_fiqr9_fiqr8_fiqr14(lr)r13(sp)r12r10r11r9r8用户模式CPSR复制到
FIQ模式
SPSRcpsrr15(pc)r14(lr)r13(sp)r12r10r11r9r8r7r4r5r2r1r0r3r6r14_fiqr13_fiqr12_fiqr10_fiqr11_fiqr9_fiqr8_fiq返回一个从用户模式计算的地址,PC值存储在FIQ模式RegistersinuseRegistersinuse异常用户模式FIQ模式spsr_fiq例子:用户模式到FIQ模式*spsr_fiqcpsrr750进入/退出异常概述进入/退出异常概述51
ARM体系结构与ARM指令集ARM体系结构概览ARM编程模型ARM指令集ARM的JTAG调试结构
ARM体系结构与ARM指令集ARM体系结构概览52ARM指令集Load-store结构*在通用寄存器中操作load/store–从存储器中读某个值,操作完后再将其放回存储器中指令分类数据处理指令
–使用和改变寄存器的值数据传送指令
–把存储器的值拷贝到寄存器中
(load)or把寄存器中的值拷贝到存储器中(store)控制流指令
分支分支和链接,保存返回的地址,以恢复最先的次序陷入系统代码ARM指令集Load-store结构*53ARM指令的寻址方式
立即寻址
寄存器寻址
寄存器间接寻址
基址变址寻址
多寄存器寻址
相对寻址
堆栈寻址
ARM指令的寻址方式立即寻址54指令格式指令格式3地址指令格式在ARM状态中使用2地址指令格式
在ARM和THUMB状态下使用指令格式指令格式55ARM指令编码格式说明:Cond指令执行的条件编码Opcode指令操作符编码S决定指令的操作是否影响CPSR的值Rd操作目标寄存器编码Rn包含第一操作数的寄存器编码Shifter_operand表示第二操作数cond001opcodesRnRdShifter_operand31 2827
2524212019 16151211870ARM指令编码格式cond001opcodesRnRdShi56跳转指令数据处理指令(数据交换指令、移位指令(操作)、乘法指令与乘加指令)程序状态寄存器访问指令加载/存储指令(批量数据加载/存储指令
)协处理器指令
异常产生指令
ARM指令集(共六大类指令)
跳转指令ARM指令集(共六大类指令)57ARM指令的条件执行所有的ARM指令可包含一个可选的条件码,只有在cpsr中的条件标志位满足指定的条件时,指令才会被执行。不符合条件的代码依然占用一个时钟周期(相当于一个NOP指令)。ARM指令的条件执行所有的ARM指令可包含一个可选的条件码58ARM指令的条件域
EQ/NE:等于/不等于(equal/not
HS/LO:无符号数高于或等于/无符号数小于(higherorsame/lower)
HI/LS:无符号数高于/无符号数低于或等于(higher/lowerorsame)
GE/LT:有符号数大于或等于/有符号数小于(greaterorequal/lessthan)
GT/LE:有符号数大于/有符号数小于或等于(greaterthan/lessorequal)
MI/PL:负/非负
VS/VC:溢出/不溢出(overflowset/overflowclear)
CS/CC:进位/无进位(carryset/carryclear)ARM指令的条件域EQ/NE:等于/不等于(equal59ARM指令的条件码ARM指令的条件码601.4.2ARM指令的条件码(续)注:AL是默认的,NV不建议使用。1.4.2ARM指令的条件码(续)注:AL是默认的,NV不61数据处理指令
-1数据处理指令的类别算术操作按位逻辑操作寄存器移位操作比较操作操作数:32-bits宽;
有3种指定操作数的方式来自寄存器第二操作数可以是常数(立即数)移位寄存器操作数结果:32-bits宽,放在寄存器中长乘法产生64位结果数据处理指令-1数据处理指令的类别62数据处理指令
–2*cond00operand2#opcodeSRnRd312827262524212019161512110目的寄存器第一操作寄存器设置操作码算术/逻辑功能8-bit立即数12511870#rotRm11765430#shiftRm025118765430RsSh010Shimmediatealignmentimmediateshiftlengthshifttypesecondoperandregister移位寄存器长度数据处理指令–2*cond00operand2#op63数据处理指令
-3数据处理指令-364数据处理指令
-4ADDr0,r1,r2r0:=r1+r2ADCr0,r1,r2r0:=r1+r2+CSUBr0,r1,r2r0:=r1-r2SBCr0,r1,r2r0:=r1-r2+C-1RSBr0,r1,r2r0:=r2–r1RSCr0,r1,r2r0:=r2–r1+C-1算术操作按位逻辑操作ANDr0,r1,r2r0:=r1andr2ORRr0,r1,r2r0:=r1orr2EORr0,r1,r2r0:=r1xorr2BICr0,r1,r2r0:=r1and(not)r2寄存器移位MOVr0,r2r0:=r2MVNr0,r2r0:=notr2比较操作CMPr1,r2setcconr1-r2CMNr1,r2setcconr1+r2TSTr1,r2setcconr1andr2TEQr1,r2setcconr1xorr2数据处理指令-4ADDr0,r1,r2r0:=65数据处理指令
-5立即数操作:
立即数操作
=(0->255)x22n,0<=n<=12移位寄存器操作数第二个操作数在与第一个操作数合成之前,是服从于移位操作的.ADDr3,r2,r1,LSL#3r3:=r2+8xr1ADDr5,r5,r3,LSLr2r5:=r5+2r2xr3ADDr3,r3,#3r3:=r3+3ANDr8,r7,#&ffr8:=r7[7:0],&forhex数据处理指令-5立即数操作:
立即数操作=(0->266数据处理指令
-6移位操作在任何数据处理指令中,第二个寄存器操作数可以有应用该操作数的移位操作.逻辑移位LSL:逻辑左移字的最小位空位清零LSR:逻辑右移字的最大位空位清零.数据处理指令-6移位操作67数据处理指令
-7移位操作
(cont’d)算术移位ASR:=LSRASL:算术左移循环移位:ROR,RRX数据处理指令-7移位操作(cont’d)68条件码标志任何数据处理指令都可以设置条件码
(N,Z,V,andC)适用于除比较操作外的所有数据处理指令特殊的请求必须在汇编语言中实现,这种请求是通过把”S”增加到选择代码中指定的算术操作设置所有的标志位(N,Z,C,andV)逻辑和移位操作设置NandZ当无移位操作时,保存V和V,或根据移位操作设置ADDSr2,r2,r0;carryouttoC条件码标志任何数据处理指令都可以设置条件码(N,Z,V69乘法指令集在寄存器产生32位值乘法指令集70乘法例子
(乘法,乘法累加器)注意最低
32-bits置于结果寄存器中,其余被忽略不支持第二立即操作数结果寄存器与源寄存器必须不同if`S`bitissettheVispreservedand
theCisrenderedmeaninglessMULr4,r3,r2r4:=[r3xr2]<31:0>MLAr4,r3,r2,r1r4:=[r3xr2+r1]<31:0>乘法例子(乘法,乘法累加器)MULr4,r3,r271数据传送指令
-1单指令传送
(LDR,STR)单字(32bit),半字(16bit)以及字节(8bit)传送寻址寄存器偏移地址
=基址寄存器偏移立即数偏移地址=基址立即数常数后变址Post-indexing:modifyaddressafteruse前变址Pre-indexing:modifyaddressbeforeuse回写如果可能,更新基址寄存器数据传送指令-1单指令传送(LDR,STR)72数据传送指令
-2多数据传送指令
(LDM,STM)load(LDM)或
store(STM)当前可访问寄存器的任意子集使用堆栈:maintainingfulloremptystackswhichcangrowupordownmemory上下文切换:保存或重新存储工作寄存器块拷贝:在主存储器中移动大数据块寻址Pre/PostindexingAutoincrementordecrement回写到基址寄存器Writebackthebaseregister数据传送指令-2多数据传送指令(LDM,STM)73数据传送指令
-3单数据交换
(SWAP)在寄存器和外部存储器之间交换字节或字读存储器和写存储器是是放在一起的原子指令执行时不能中断当‘LOCK’信号输出操作时,外部存储器管理单元被锁定,当多线程操作时使程序同步(OS支持)锁定信号量数据传送指令-3单数据交换(SWAP)74数据传送指令-4LDRr0,[r1]r0:=mem32[r1]STRr0,[r1]mem32[r1]:=r0Note:r1keepsawordaddress(2LSBsare0)LDRr0,[r1,#4]r0:=mem32[r1+4]寄存器间接寻址基址+偏移量寻址
(offsetofupto4Kbytes)LDRr0,[r1,#4]!r0:=mem32[r1+4]
r1:=r1+4自动变址寻址LDRr0,[r1],#4r0:=mem32[r1]
r1:=r1+4后变址寻址LDRBr0,[r1]r0:=mem8[r1]Note:norestrictionsforr1单寄存器
loadandstore数据传送指令-4LDRr0,[r1]r0:=me75数据传送指令
-5COPY: ADRr1,TABLE1 ;r1pointstoTABLE1 ADRr2,TABLE2 ;r2pointstoTABLE2LOOP: LDRr0,[r1] STRr0,[r2] ADDr1,r1,#4 ADDr2,r2,#4 ...TABLE1: ...TABLE2:...数据传送指令-5COPY: ADRr1,TABLE176数据传送指令-6块拷贝数据被存贮在基本寄存器的上面地址或下面地址
地址增加或减少是在存贮第一个值之前或之后开始的LDMIAr1,{r0,r2,r5}r0:=mem32[r1]
r2:=mem32[r1+4]
r5:=mem32[r1+8]Note:寄存器的部分或全部都可以用单指令传送Note:在表中的寄存器顺序并不重要Note:在表中包括r15i将造成控制流的改变多寄存器数据传送
[IncrementAfter]IA:IncrementAfter,传送后地址加1IB:IncrementBefore,传送前地址加1DA:传送前地址减1DB:传送前地址减1数据传送指令-6块拷贝LDMIAr1,{r0,r277多寄存器传送寻址模式r5r1r9’r0r9STMIAr9!,{r0,r1,r5}100016100c16101816r1r5r9STMDAr9!,{r0,r1,r5}r0r9’100016100c16101816r5r9STMDBr9!,{r0,r1,r5}r1r0r9’100016100c16101816r5r1r0r9’r9STMIBr9!,{r0,r1,r5}100016100c16101816多寄存器传送寻址模式r5r1r9’r0r9STMIAr9!78控制流指令控制流指令79条件执行条件执行避免使用分支指令Example
CMPr0,#5 ; BEQBYPASS ;if(r0!=5){ ADDr1,r1,r0 ;r1:=r1+r0-r2 SUBr1,r1,r2 ;}BYPASS: ...
CMPr0,#5 ; ADDNEr1,r1,r0; SUBNEr1,r1,r2 ; ...使用条件执行Note:add2–letterconditionafterthe3-letteropcode;if((a==b)&&(c==d))e++;CMPr0,r1CMPEQr2,r3ADDEQr4,r4,#1条件执行条件执行避免使用分支指令 CMPr0,#5 ;80控制和分支指令控制指令分支和分支连接跳到希望的指令中保存当前的PC并返回(with‘L’bit)分支和交换跳到期望的指令中与指令集交换Rm[0]==1:Subsequentinst.areTHUMB.Rm[0]==0:Subsequentinst.areARM.condRm0001001011111111111100312827654301L控制和分支指令控制指令condRm000100181PSR指令程序状态寄存器访问指令(MRS,MSR)MRS程序状态寄存器到通用寄存器的数据传送指令MSR通用寄存器到程序状态寄存器的数据传送指令PSR指令程序状态寄存器访问指令(MRS,MSR)82Thumb指令为兼容数据总线宽度为16位的应用系统,ARM体系结构除了支持执行效率很高的32位ARM指令集以外,同时支持16的Thumb指令集。Thumb指令集是ARM指令集的一个子集,允许指令编码为16位的长度。与等价的32位代码相比较,Thumb指令集在保留32代码优势的同时,大大的节省了系统的存储空间。Thumb指令为兼容数据总线宽度为16位的应用系统,ARM83Thumb指令ARM指令的时间效率和空间效率关系为:—Thumb代码所需的存储空间约为ARM代码的60%~70%—Thumb代码使用的指令数比ARM代码多约30%~40%—若使用32位的存储器,ARM代码比Thumb代码快约40%—若使用16位的存储器,Thumb代码比ARM代码快约40%~50%—与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30%Thumb指令ARM指令的时间效率和空间效率关系为:84ARM系统初始化过程简介包括:中断向量表初始化存储器系统初始化堆栈初始化有特殊要求的端口、设备初始化应用程序执行环境改变处理器模式CALL主应用程序ARM系统初始化过程简介包括:85初始化程序的下载执行目标机宿主机1)通过编程器将可执行目标文件烧写到BootROM(ROM、EPROM、FLASH)等;2)通过串行口和网口下载执行目标文件,要求宿主机系统上有数据传输工具程序、目标机装载器、嵌入式监视器或目标机系统上的调试代理。3)通过JTAG或BDM接口下载;初始化程序的下载执行目标机宿主机1)通过编程器将可执行目标文86嵌入式系统的初始化过程嵌入式系统的初始化过程87嵌入式系统的初始化过程硬件初始化阶段1、复位向量
ENTRYbResetHandler;fordebugbHandlerUndef;handlerUndefbHandlerSWI;SWIinterrupthandlerbHandlerPabort;handlerPAbortbHandlerDabort;handlerDAbortb. ;handlerReservedbHandlerIRQbHandlerFIQ嵌入式系统的初始化过程硬件初始化阶段1、复位向量88嵌入式系统的初始化过程(2)硬件初始化阶段2、最小硬件初始化1)设置适当的寄存器,使嵌入式处理器处于一个已知的状态:获得CPU的类型;获得或设置CPU的时钟频率。2)禁止中断和高速缓存3)初始化内存控制器、内存芯片和高速缓存单元,包括:得到内存的开始地址;得到内存的大小;如果有要求,则还需要进行主存测试;嵌入式系统的初始化过程(2)硬件初始化阶段2、最小硬件初始化89嵌入式系统的初始化过程(3)硬件初始化阶段3、其余硬件初始化1)引导代码调用合适的函数对目标机系统上的全部硬件部件进行初始化,包括:建立执行处理程序初始化中断处理程序初始化总线接口初始化板级外设得到内存的开始地址;嵌入式系统的初始化过程(3)硬件初始化阶段3、其余硬件初始化90嵌入式系统的初始化过程(4)RTOS初始化阶段4、RTOS初始化1)RTOS初始化2)RTOS对象和服务初始化任务信号量定时器中断内存管理3)RTOS任务堆栈初始化4)RTOS扩展部件初始化5)启动RTOS嵌入式系统的初始化过程(4)RTOS初始化阶段4、RTOS初911、中断向量表FIQ0x1C外部快速中断IRQ0x18一般外部中断(Reserved)0x14保留DataAbort0x10数据异常FrefetchAbort0x0C预取指异常Softwareint0x08软件中断Undef0x04未定义指令中断Reset0x00复位中断1、中断向量表FIQ0x1C外部快速中断IRQ0x18一般外92中断向量表的程序AREABoot,CODE,READONLYENTRYBReset_handlerBUndef_HandlerBSWI_HandlerBPreAbort_HandlerB.;forreservedinterrupt,stophereBIRQ_handlerBFIQ_handler中断向量表的程序AREABoot,CODE,READONL932、初始化存储器系统存储器的类型和时序配置存储器的地址分布2、初始化存储器系统存储器的类型和时序配置94ROM地址的重映射(remap)0x0200(bootcode)0x0100(Reset_handler)……BReset_Handler0x0000Flash(remap)0x0204(bootcode)0x0200(Reset_handler)BReset_Handler0x0000RAMROM地址的重映射(remap)0x0200(bootco953、初始化堆栈ARM有7种执行状态,每一种状态堆栈指针寄存器(SP)都是独立的;对每一种模式都要定义SP寄存器的堆栈地址;3、初始化堆栈ARM有7种执行状态,每一种状态堆栈指针寄存器964、初始化有特殊要求的端口、设备如驱动指示系统运行状态的一些简单的输出设备,如LED,蜂鸣器等一般外设初始化可以系统初始化之后进行4、初始化有特殊要求的端口、设备如驱动指示系统运行状态的一些975、初始化应用程序执行环境完成必要的从ROM到RAM的数据传输5、初始化应用程序执行环境完成必要的从ROM到RAM的数据传986、改变处理器模式管理员模式多种特权模式用户运行模式复位后缺省模式堆栈初始化阶段用户选择6、改变处理器模式管理员模式多种特权模式用户运行模式复位后缺997、呼叫主应用程序系统初始化工作完成后,程序流程转入主应用程序执行可以直接从启动代码跳到应用程序的主函数入口7、呼叫主应用程序系统初始化工作完成后,程序流程转入主应用程100
ARM体系结构与ARM指令集ARM体系结构概览ARM编程模型ARM指令集ARM的JTAG调试结构
ARM体系结构与ARM指令集ARM体系结构概览101嵌入式软件的开发过程嵌入式软件的开发过程102ARM的JTAG调试结构AngelJTAGARM的JTAG调试结构AngelJTAG103宿主机调试器宿主机调试器通过固定的协议控制下位机(协议转换器)。比如,SDT中通过Angel协议或者第三方调试器所提供的协议宿主机调试器只发送宏观的命令,比如:
程序运行、终止。读内存、ARM寄存器等通讯的介质可以是串口、并口、以太网、USB等宿主机调试器宿主机调试器通过固定的协议控制下位机(协议转换器104JTAG与AngelJTAG调试:协议转换器解释上位机传送过来的命令,通过JTAG控制ARM执行。Angel调试:协议转换器可以直接做为目标板的Firmware的一部分。直接执行从宿主机传送过来的调试命令;并回送相应的数据。Angel可以节省专门的JTAG仿真器,但是,它需要软件,或者是嵌入式操作系统的支持,做不到完全的实时仿真。而JTAG仿真是通过硬件和控制ARM的EmbeddedICE实现的,可以做到实时仿真。JTAG与AngelJTAG调试:协议转换器解释上位机传送过105什么是JTAG?JTAG是JointTestActionGroup的缩写是IEEE1149.1标准JTAG的建立使得集成电路固定在PCB上,只通过边界扫描便可以被测试在ARM7TDMI处理器中,可以通过JTAG直接控制ARM的内部总线,IO口等信息,从而达到调试的目的什么是JTAG?JTAG是JointTestAction106JTAG的典型接口TMS:测试模式选择(TestModeSelect),通过TMS信号控制JTAG状态机的状态TCK:JTAG的时钟信号TDI:数据输入信号TDO:数据输出信号nTRST:JTAG复位信号,复位JTAG的状态机和内部的宏单元(Macrocell)JTAG的典型接口TMS:测试模式选择(TestMode107
ARM体系结构与ARM指令集
ARM体系结构与ARM指令集108
ARM体系结构与ARM指令集ARM体系结构概览ARM编程模型ARM指令集ARM的JTAG调试结构
ARM体系结构与ARM指令集ARM体系结构概览109微机应用新技术第四部分第三章--ARM体系结构与指令集110ARMLtd成立于1990年11月前身为Acorn计算机公司AdvanceRISCMachine(ARM)主要设计ARM系列RISC处理器内核授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片IP(IntelligenceProperty)另外也提供基于ARM架构的开发设计技术软件工具,评估板,调试工具,应用软件,总线架构,外围设备单元,等等ARMLtd成立于1990年11月111ARMOfficesWorldwide800+雇员全球EnglandCambridge,Maidenhead,Sheffield,BlackburnGermanyMunich FranceParis,SophiaAntipolisKoreaSeoulUSSeattle,LosGatos,WalnutCreek,Austin,Boston,SanDiegoChinaTaiwanandShanghaiJapanShin-Yokohama(Tokyo)ARMOfficesWorldwide800+雇员En112ARMPartnershipModelARMPartnershipModel113ARM即AdvancedRISCMachines的缩写。1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州SanJoseVLSI技术公司制造。20世纪80年代后期,ARM很快开发成Acorn的台式机产品,形成英国的计算机教育基础。1990年成立了AdvancedRISCMachinesLimited。20世纪90年代,ARM32位嵌人式RISC(ReducedInstructionSetComputer)处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。
ARM的发展历程-1ARM即AdvancedRISCMachines的缩写。11432位RISC处理器受到青睐,领先的是ARM嵌入式微处理器系列。ARM公司虽然只成立10多年,但在1999年因移动电话火爆市场,其32位RISC处理器占市场份额超过了50%,2001年初,ARM公司的32位RISC处理器市场占有率超过了75%。ARM公司是知识产权供应商,是设计公司。由合作伙伴公司来生产各具特色的芯片。ARM的发展历程-132位RISC处理器受到青睐,领先的是ARM嵌入式微处理器系115ARM的发展历程-1ARM公司商业模式的强大之处在于其价格合理,全世界范围有超过100个合作伙伴--包括半导体工业的著名公司。ARM公司专注于设计,其内核耗电少、成本低、功能强,特有16/32位双指令集。ARM已成为移动通信、手持计算、多媒体数字消费等嵌入式解决方案的RISC标准。
在所有ARM处理器系列中,ARM7处理器系列应用最广,采用ARM7处理器作为内核生产芯片的公司最多。ARM的发展历程-1ARM公司商业模式的强大之处在于其价格合116ARM的发展历程-21991-ARM推出第一款RISC嵌入式微处理器核ARM61993-ARM推出
ARM7核1995–ARM的
Thumb扩展指令集结构为16位系统增加了32位的性能,提供业界领先的代码密度ARM的发展历程-21991-ARM推出第一款RISC117ARM的发展历程-3ARM的发展历程-3118ARM处理器的3大特点如下:小体积、低功耗、成本低、高性能;16位/32位双指令集;全球众多的合作伙伴。当前ARM体系结构的扩充包括:Thumb:16位指令集,用以改善代码密度;DSP:用于DSP应用的算术运算指令集;Jazeller:允许直接执行Java代码的扩充。ARM处理器系列提供的解决方案包括:在无线、消费电子和图像应用方面的开放平台;存储、自动化、工业和网络应用的嵌入式实时系统;智能卡和SIM卡的安全应用。ARM处理器的特点ARM处理器的3大特点如下:ARM处理器的特点119ARM授权费IPARM创造和设计IPPartner产品,例如:芯片Partner把ARMIP和其他IP集成进产品OEMCustomer版权费单价OEM用来自ARMPartner的芯片设计制造最终用户产品业务拓展
/市场格局ARM的业务模型ARM授权费IPARM创造和Partner产品,例如:芯片120ARM发展SA-110ARM7TDMI4T1支持Halfword和signedhalfword/byte和Systemmode支持Thumb指令集24ARM9TDMISA-1110ARM720TARM940T改良的ARM/Thumb交互作用以及CLZ指令5TESaturatedmathsDSPmultiply-accumulateinstructionsXScaleARM1020EARM9E-SARM966E-S3早期的ARMsARM9EJ-S5TEJARM7EJ-SARM926EJ-SJazelle支持Java字节码
6ARM11SIMDSISIMDMDSSIMDARM发展SA-110ARM7TDMI4T1支持Halfwo121ARM微处理器微处理器核:ARM6,ARM7,ARM9,ARM10,ARM11扩展:Thumb,DSP,SIMD,Jazelleetc.其它IP核:UART,GPIO,memorycontrollers,etcARM微处理器微处理器核:ARM6,ARM7,ARM122ARM核命名的含义
ARM核命名的含义123ARMCore(ARM核)
处理器核/整数核(ProcessorCore/IntegerCore):ARM7TDMI,ARM9TDMI,ARM9E-S,ARM10TDMI,ARM10E等。ARMCPU核(ARMCPUCores):ARM710T/720T/740T,ARM920T/940T,ARM946E-S,ARM966E-S,ARM1020E等。基于ARMCoreCPU的应用处理器,比如:Intel的pxa25x,Philip的lpc22xx系列,Samsung的S3C44B0等。ARMCore(ARM核)处理器核/整数核(Proc124ARM7T和ARM7EFamilyARM7T和ARM7EFamily125ARM7系列的升级ARM7系列的升级126ARM9FamilyARM9Family127ARM9系列的升级ARM9系列的升级128ARM体系结构版本
-1Version1(obsolete)基本数据处理字节,字以及多字load/store软件中断26bit地址总线Version2(obsolete)Multiply&Multiply-accumulate支持协处理器支持线程同步26bit地址总线ARM体系结构版本-1Version1(obsole129ARM体系结构版本
-2V3版本推出32位寻址能力,结构扩展变化为T—16位压缩指令集M—增强型乘法器,产生全64位结果(32X3264or32X32+6464)V4版本增加了半字load和store指令V5版本改进了ARM和Thumb之间的交互,结构扩展变化为:E---增强型DSP指令集,包括全部算法操作和16位乘法操作J----支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能ARM体系结构版本-2V3版本推出32位寻址能力,结构扩130ARM体系结构更新ARM体系结构更新131体系结构变化
–1*THUMB指令集
(‘T’)THUMB指令集:32位ARM指令集的子集,按16位指令重新编码代码尺寸小
(upto40%compression)简化设计体系结构变化–1*THUMB指令集(‘T’)132体系结构变化
-2长乘法指令
(‘M’)32x32=64bit.提供全64位结果增强DSP指令集
(‘E’)可附加在ARM中的DSP指令64bit转换在v5版本中第一次推出处理器内核的变化D:在片调试.处理器可响应调试暂停请求I:EmbeddedICE.支持片上断点调试体系结构变化-2长乘法指令(‘M’)133体系结构变化
-3ARMDSP指令集对于音频DSP应用提供高达70%的处理速度Jazelle提供比基于软件的JAVA虚拟机(JVM)更高的性能
与非JAVA加速核相比,提供8倍JAVA加速性能和降低80%的功耗139字节码直接在硬件上执行,88个字节码在软件上执行体系结构变化-3ARMDSP指令集134
ARM体系结构与ARM指令集ARM体系结构概览ARM编程模型ARM指令集ARM的JTAG调试结构
ARM体系结构与ARM指令集ARM体系结构概览135指令流水线为增加处理器指令流的速度,ARM7系列使用3级流水线.允许多个操作同时处理,比逐条指令执行要快。PC指向正被取指的指令,而非正在执行的指令FetchDecodeExecute从存储器中读取指令解码指令寄存器读(从寄存器Bank)移位及ALU操作寄存器写(到寄存器Bank)PC PCPC-4 PC-2PC-8 PC-4ARM Thumb指令流水线为增加处理器指令流的速度,ARM7系列使用3级流136处理器的工作状态ARM7TDMI处理器有两种工作状态:ARM-32-bit,按字排列的ARM指令集Thumb-16-bit,按半字排列的Thumb指令集ARM7TDMI核的操作状态可能通过BX指令(分支和交换指令)在ARM状态和Thumb状态之间切换例:从ARM状态切换到Thumb状态:LDRR0,=Label+1BXR0从Thumb状态切换到ARM状态:LDRR0,=LabelBXR0处理器的工作状态ARM7TDMI处理器有两种工作状态:例:137存储器模式*大端模式字数据的高位字节存储在低地址中字数据的低字节则存放在高地址中小端模式低地址中存放字数据的低字节高地址中存放字数据的高字节3124
2316
158
70字地址11109887654432100低地址高地址3124
2316
158
70字地址89101184567401230低地址高地址存储器模式*大端模式3124231615870字地址1138TheARM可以用little/bigendian格式存取数据.r0=0x11223344STRr0,[r1]LDRBr2,[r1]r1=0x100Memory32100123ByteLane312423161587011223344312423161587011223344312423161587011223344312423161587000000044312423161587000000011LittleendianBigendianR2=0x44R2=0x11Formoreinformation,see:“ApplicationNote61:BigandLittleEndianByteAddressing”139TheARM可以用little/bigendian数据和指令类型ARM采用的是32位架构.ARM约定:Byte: 8bitsHalfword:16bits(2byte)Word: 32bits(4byte)大部分ARMcore提供:ARM指令集(32-bit)Thumb指令集(T变种)(16-bit)Jazellecores支持Javabytecode(J变种,4TEJ)数据和指令类型ARM采用的是32位架构.140处理器工作模式ARM有7个基本工作模式:1、User:非特权模式,大部分任务执行在这种模式正常程序执行的模式2、FIQ:当一个高优先级(fast)中断产生时将会进入这种模式高速数据传输和通道处理3、IRQ:当一个低优先级(normal)中断产生时将会进入这种模式通常的中断处理4、Supervisor:当复位或软中断指令执行时将会进入这种模式供操作系统使用的一种保护模式5、Abort:当存取异常时将会进入这种模式虚拟存储及存储保护6、Undef:当执行未定义指令时会进入这种模式软件仿真硬件协处理器7、System:使用和User模式相同寄存器集的特权模式特权级的操作系统任务141处理器工作模式ARM有7个基本工作模式:34寄存器组织
–1*寄存器组织–1*142寄存器
-237寄存器31个通用32位寄存器,包括程序计数器PC未分组寄器R0-R7分组寄存器R8-R14程序计数器PC(R15)6个状态寄存器15通用寄存器
(R0toR14),以及1或者2个状态寄存器和程序计数器在任何时候都是可以访问的可访问的寄存器取决于处理器的模式其它寄存器(thebankedregisters)的状态在支持IRQ,FIQ,管理员,中止和未定义模式处理时被切换寄存器-237寄存器143寄存器
-3R0到
R15可以直接访问R0到
R14是通用寄存器R13:堆栈指针
(sp)(通常)每种处理器模式都有单独的堆栈R14:链接寄存器(lr)R15包含程序计数器
(PC)CPSR–当前程序状态寄存器,包括代码标志状态和当前模式位5个SPSRs--(程序状态保存寄存器)当异常发生时保存CPSR状态寄存器-3R0到R15可以直接访问144程序状态寄存器
-1ARM7TDMI包含当前程序状态寄存器
(CPSR),加上5个程序状态保存寄存器SPSR,当异常发生时,用于保存CPSR的状态这些寄存器的功能是:保存ALU当前操作信息控制允许和禁止中断设置处理器操作模式程序状态寄存器-1ARM7TDMI包含当前程序状态寄存145程序状态寄存器格式
程序状态寄存器格式146程序状态寄存器条件位:N=1-结果为负,0-结果为正或0Z=1-结果为0,0-结果不为0C=1-进位,0-借位V=1-结果溢出,0结果没溢出Q位:仅ARM5TE/J架构支持指示增强型DSP指令是否溢出J位仅ARM5TE/J架构支持J=1:处理器处于Jazelle状态中断禁止位:I=1:禁止IRQ.F=1:禁止FIQ.TBit仅ARMxT架构支持T=0:处理器处于ARM状态T=1:处理器处于Thumb状态Mode位(处理器模式位):0b10000 User0b10001 FIQ0b10010 IRQ0b10011 Supervisor0b10111 Abort0b11011 Undefined0b11111 System2731NZCVQ2867IFTmode1623
815
54024fsxc
UndefinedJ程序状态寄存器条件位:中断禁止位:2731NZCV147程序状态寄存器PSR的模式位程序状态寄存器PSR的模式位148Thumb状态下的寄存器组织
Thumb状态下的寄存器组织149当处理器执行在ARM状态:所有指令32bits宽所有指令必须word对齐所以pc值由bits[31:2]决定,bits[1:0]未定义(所以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 碎石砂砾供应合约
- 水泥购销简单协议
- 施工项目合同协议
- 专利权合法使用声明
- 房屋买卖合同书格式示例
- 租房品质承诺函
- 驾驶证保证承诺书
- 养老照料陪护合同
- 郑州西亚斯学院《大数据可视化技术与应用》2023-2024学年期末试卷
- 房屋租赁补充协议书
- 糖尿病足部护理指导
- 2024-2030年全球及中国乳清蛋白水解物行业供需现状及前景动态预测报告
- 2024-2030年中国铝合金板行业供需现状分析及投资战略研究报告版
- 电影院消防安全预案
- 预防电信诈骗打击网络犯罪49
- 安徽省合肥市庐阳区2023-2024学年四年级上学期期中数学试卷(含答案)
- 污水处理厂土建工程的主要施工方案
- 生气王子课程设计
- 2024招商银行校园招聘高频难、易错点500题模拟试题附带答案详解
- 集体生活成就我 课件-统编版道德与法治七年级上册
- GB/T 44577-2024商用电动洗碗机性能测试方法
评论
0/150
提交评论