




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十三讲ARM存储机制河南大学计算机与信息工程学院授课人:金勇联系电话mail:jy@计算机专业核心课程之一ARM存储系统概述快速上下文切换技术高速缓冲区和写缓冲区ARM存储器管理单元ARM存储机制ARM存储器访问指令3ARM存储系统概述与其他中低档单片机不同,ARM处理器中一般都包含一个存储器管理部件,用于对存储器的管理。为了适应不同的嵌入式应用,ARM存储系统的体系结构存在很多差别。简单的可以使用像单片机系统中使用的平板式地址映射机制即可;而一些复杂的系统中则可能包含多种技术来提供功能强大的存储系统。4系统中可能包含多种类型的存储器件,如FLASH、ROM、SDRAM、SRAM等;而且不同类型的存储器件要求不同的速度、数据宽度等;通过CACHE和WRITEBUFFER技术缩小处理器和存储系统速度差别,从而提高系统性能;内存管理部件使用内存映射技术实现虚拟空间到物理空间的映射。引入存储保护机制,增强系统的安全性;引入一些机制保证I/O操作映射成内存操作后,各种I/O操作能够得到正确的结果。ARM存储系统概述5S3C2410X的存储器管理器提供访问外部存储器的所有控制信号:27位地址信号、32位数据信号、8个片选信号、以及读/写控制信号等。S3C2410X的存储空间分成8组,最大容量是1GB,bank0bank5为固定128MB,bank6和bank7的容量可编程改变,可以是2、4、8、16、32、64、128MB,并且bank7的开始地址与bank6的结束地址相连接,但是二者的容量必须相等。bank0可以作为引导ROM,其数据线宽只能是16位和32位,复位时由OM0、OM1引脚确定;其它存储器的数据线宽可以是8位、16位和32位。S3C2410X的存储器格式,可以编程设置为大端格式,也可以设置为小端格式。ARM存储器管理单元6S3C2410X存储器组织示意图ARM存储器管理单元ARM存储器管理单元寄存器地址功能操作复位值BWSCON0x48000000总线宽度和等待控制读/写0x0BANKCON00x48000004BANK0控制读/写0x0700BANKCON10x48000008BANK1控制读/写0x0700BANKCON20x4800000CBANK2控制读/写0x0700BANKCON30x48000010BANK3控制读/写0x0700BANKCON40x48000014BANK4控制读/写0x0700BANKCON50x48000018BANK5控制读/写0x0700BANKCON60x4800001CBANK6控制读/写0x18008BANKCON70x48000020BANK7控制读/写0x18008REFRESH0x48000024SDRAM刷新控制读/写0xAC0000BANKSIZE0x48000028可变的组大小设置读/写0x0MRSRB60x4800002CBANK6模式设置读/写xxxMRSRB70x48000030BANK7模式设置读/写xxx13个控制寄存器为访问外部存储空间提供存储器控制信号。8用于存储管理的系统控制协处理寄存器CP15在基于ARM的嵌入式系统中,存储系统通常使用CP15来完成存储器的大部分管理工作;除了CP15之外,在具体的存储机制中可能还会用到其他技术如:页表技术等。CP15可以保护16个32位的寄存器,编号0-15。实际上对于某些编号的寄存器可能对应有多个物理寄存器,在指令中指定特定的标志位来区分相应的寄存器。ARM存储器管理单元CP15寄存器列表-1寄存器编号基本作用在MMU中的作用0ID编码(只读)ID码和Cache类型1控制位各种控制位2存储保护和控制地址转换表基地址3存储保护和控制域访问控制位4存储保护和控制保留5存储保护和控制内存失效状态6存储保护和控制内存失效地址ARM存储器管理单元CP15寄存器列表-2寄存器编号基本作用在MMU中的作用7高速缓存和写缓存高速缓存和写缓存控制8存储保护和控制TLB控制9高速缓存和写缓存高速缓存锁定10存储保护和控制TLB锁定11保留
12保留
ARM存储器管理单元11CP15寄存器列表-3寄存器编号基本作用在MMU中的作用13进程标识符进程标识符14保留
15因不同设计而异因不同设计而异ARM存储器管理单元12访问CP15寄存器的指令访问CP15寄存器的指令有如下两条:MCR Register->CoprocessorRegisterMRC CoprocessorRegister->Register【注】这两条指令只能在系统模式下执行;在用户模式下执行该指令将引起异常。ARM存储器管理单元指令语法
MCR{cond}p15,<op1>,<Rd>,<CRn>,<CRm>{,<op2>}MCR2p15,<op1>,<Rd>,<CRn>,<CRm>{,<op2>}
OP1为协处理器将执行的操作的代码。对于CP15来说,该值必须为0;Rd为源寄存器,其值将被传送到协处理器中;该寄存器不能为PC;CRn是协处理器的目标寄存器,可以是C0-15;CRm是附加的目标寄存器或源操作数寄存器,用于区分同一编号的不同物理寄存器,当指令中不需要附加信息时要将C0指定为CRm;OP2也提供附加信息,用于区分同一编号的不同物理寄存器,当指令中不需要附加信息时,可以省略或者将其置0。ARM存储器管理单元14MCR访问CP15示例 MCR P15,0,R4,C1,C0,0上述指令从ARM寄存器R4中将数据传送到协处理器CP15的寄存器C1中。其中R4为ARM寄存器,存放源操作数;C1和C0为协处理器寄存器,为目标寄存器;操作码1为0,操作码附加信息也为0。ARM存储器管理单元15指令语法
MRC{cond}p15,<op1>,<Rd>,<CRn>,<CRm>{,<op2>}MRC2p15,<op1>,<Rd>,<CRn>,<CRm>{,<op2>}
OP1为协处理器将执行的操作的代码。对于CP15来说,该值必须为0;Rd为目标寄存器,指令处理的结果将存放在该寄存器中;CRn是协处理器寄存器,存放第一个源操作数;CRm是附加的源操作数寄存器,用于区分同一编号的不同物理寄存器,当指令中不需要附加信息时要将C0指定为CRm;OP2也提供附加信息,用于区分同一编号的不同物理寄存器,当指令中不需要附加信息时,可以省略或者将其置0。ARM存储器管理单元16存储管理单元MMU的作用实现虚拟地址空间到物理存储空间的映射;存储器访问权限的控制;设置虚拟存储空间的缓冲特性。
页表是实现上述功能的一个重要手段,它实际上是位于内存中的一个对照表。ARM存储器管理单元17存储器单元的段页式管理为了实现不同层次的管理,系统提供了基于段或页的存储器访问方式段(section):由1MB的存储器块构成
大页(largepage):由64KB的存储器块构成
小页(smallpage):由4KB的存储器块构成
微页(tinypage):由1KB的存储器块构成ARM存储器管理单元18用于存储管理的页表地址变换条目:页表的每一行对应与虚拟地址空间的一个页,该行同时保含了该虚拟内存页对应的物理内存页的地址、该页的访问权限以及缓冲特性等。我们将页表中的一行称为地址变换条目。页表存放在内存中,系统通常有一个寄存器来保存页表的基地址。ARM系统中使用的就是CP15的寄存器C2。快表:从虚拟地址到物理地址的转换实际上就是查询页表的过程。由于程序在执行过程中具有局部性,即在一段时间内只是局限在少数几个单元,为了加快页表的查询速度,在系统中通常使用一个容量更小、速度更快的存储器件来保存当前需要访问的地址变换条目,这个容量小的页表又称作快表(TLB)。ARM存储器管理单元19快表的使用更新:当CPU需要访问内存时,首先在TLB中查找需要的地址变换条目。若不存在则在内存页表中查询,并把查询的结果添加到TLB中。清除:当内存中页表的内容改变或者使用新的页表时,TLB中的内容需要清空。CP15的寄存器8用于完成该功能。锁定:可以将一个地址变换条目锁定在TLB中,以加快访问速度,CP15的寄存器10用于完成该功能。ARM存储器管理单元20域(domain)管理域是段、大页和小页的集合。ARM结构支持16个域。对域的访问由域访问控制寄存器(CP15的寄存器3)的两个位字段控制。因为每个字段对访问对应的域的使能非常迅速,所以整个存储器区间能很快地交换进出虚拟存储器。这里支持2种域访问方式客户:域的用户(执行程序,访问数据),被形成这个域的节或页来监督访问权限。管理者:控制域的行为(域中的当前段和页,对域的访问),不被形成这个域的段或页来监督访问权限。一个程序可以是一些域的客户,也是另外一些域的管理者,同时没有对其它域的访问权限。这允许对程序访问不同存储器资源的非常灵活的存储器保护。ARM存储器管理单元21内存访问失效管理当存储器访问失败时,MMU单元提供了相应的机制用于处理这种情况。CP15的寄存器5和寄存器6用于完成该功能。ARM存储器管理单元22寄存器1的MMU控制位M(bit[0])使能MMU0=禁止MMU1=允许MMU在没有MMU和保护单元的系统上,这个位应该读出为0,并忽略写。A(bit[1])使能对齐错检查0=禁止1=允许..RRVIZFRSBLDPWCAM..14131211109876543210ARM存储器管理单元23禁止和使能MMU下面指令使能MMU MRC P15,0,R0,C1,0,0 OR R0,#1 MCR P15,0,R0,C1,0,0下面指令禁止MMU MRC P15,0,R0,C1,0,0 BIC R0,#1 MCR P15,0,R0,C1,0,0ARM存储器管理单元24地址变换过程虚拟存储空间到物理存储空间的映射是以内存块为单位进行的。在MMU中采用两级页表实现上述地址映射:一级页表中包含有以段为单位的地址变换条目以及指向二级页表的指针。一级页表实现的地址映射粒度较大;二级页表中包含以大页和小页为单位的地址变换条目。其中一种类型的二级表还包含有极小页为单位的地址变换条目。ARM存储器管理单元25基于一级页表的地址变换ARM存储器管理单元26一级页表描述符可能的格式ARM存储器管理单元如果bits[1:0]=0b10时,该页表项为段描述符(Section
Descriptor),段描述符定义了对应的1MB的虚拟存储空间的地址映射关系。
如果bits[1:0]=0b01时,该页表项包含了粗二级页表的物理地址。该粗二级页表定义了对应的1MB虚拟存储空间的地址映射关系。它可以实现以大页和小页为单位的地址映射。
如果bits[1:0]=0b11时,该页表项包含了细二级页表的物理地址。该细二级页表定义了对应的1MB虚拟存储空间的地址映射关系。它可以实现以大页、小页和极小页为单位的地址映射。
如果bits[1:0]=0b00时,说明此页表项是一个错误页表项。它将产生一个存储页错误。错误条件会导致预取指令中止或数据中止,这取决于具体的存储器访问类型。27基于段地址的映射示意图ARM存储器管理单元28处理器主频较高,通常为几十兆甚至几百兆,而一般存储器(DRAM)的存储周期为100~200ns。存储器的速度严重制约着系统的性能。高速缓冲存储器(cache)是一个硬件部件,对我们来说是透明的。Cache与主存储器间以块(cacheline)为单位进行数据交换。Cache的存取速度远远大于主存储器的速度,存储器访问的时间局部性决定了采用Cache后,系统的整体性能可以得到大大提高。高速缓冲区和写缓冲区29Cache的工作原理高速缓冲区和写缓冲区30Cache的工作原理在Cache存储系统中,把Cache和主存划分为相同大小的块。主存地址可以使用块号(B)和块内地址(W)两部分组成。同样Cache的地址也可以使用块号(B)和块内地址(W)两部分组成。命中率:当CPU访问存储器时,通过存储器地址变换部件把地址变换成cache的块号和块内地址,如果变换成功(称为cache命中),就用得到的cache地址访问cache,从cache中取数;如果变换失败,则产生cache失效信息,并用主存储器的地址访问主存储器,同时将包含被访问字在内的一整块都从主存储器读出来,装入到cache中,但如果这时cache已满,需要采用适当的替换算法来更新cache。高速缓冲区和写缓冲区31Cache的地址映象和变换方法地址映象指把主存地址空间映象到cache地址空间,具体说就是把存放在主存中的程序按照某种规则装入到cache中,并建立主存地址到cache地址之间的对应关系。地址变换是指当程序已经装入到cache中后(形成地址映象),在实际运行过程中,把主存地址如何变换成cache地址。地址映象和变换是密切相关的,算法需要统一。但所有方法都将主存和cache划分为同样大小的存储单元(称为块),在进行变换时都是以块为单位。地址映象和变换方法包括:全相联映象、直接映象、组相联映象三种方法。高速缓冲区和写缓冲区32地址映象和变换方法-全相联映象方式主存中任意一块可以映射到cache中的任意一块的位置上。如果cache的块容量为C,主存的块容量为M,则两则之间的映象关系有C*M中,如果采用目录表来存放这些映象关系,目录表的容量为C。高速缓冲区和写缓冲区缺点:电路设计难以实现33地址映象和变换方法-直接映象方式这是最简单也是最直接的方法。主存中一块只能映象到cache中的一个特定的块中。假设主存的块号为B,cache的块号为b,则他们之间的映象关系可以使用下面的公式表示:
b=BmodeCb
其中Cb为cache的块容量高速缓冲区和写缓冲区34地址映象和变换方法-组相联映象方式在这种方式下,把主存和cache按照同样大小划分成组,每个组都由相同的块数组成。这样,主存的组数要比cache的组数多;主存的组与cache的组之间采用直接映象的方式;在两个对应的组之间采用全相联映象方式。高速缓冲区和写缓冲区35Cache的分类统一/独立的数据和指令cache
适应独立的数据和指令cache,可以在同一个时钟周期中读取指令和数据,而不需要双端口的cache。但这时需要保证指令和数据的一致性。写回和写通cache
写回cache指执行写操作时,被写的数据只写入cache,仅当cache需要被替换时才将数据写入到实际的存储器中; 写通则是在指执行写操作时,同时向cache和存储器执行写操作,从而保证数据的一致性。高速缓冲区和写缓冲区36Cache替换算法随机替换算法和轮转法随机替换算法通过一个随机数发生器产生随机数,用新块将编号为该随机数的块进行替换。轮转法维护一个逻辑的计数器,利用该计数器依次选择将要被替换出去的cache块。高速缓冲区和写缓冲区37Cache的编程接口与cache和写缓冲区相关的寄存器包括CP15中的寄存器C7、寄存器C9以及寄存器C1中的某些位。MCRP15,0,<Rd>,<C1>,<CRm>,<Op2>MCRP15,0,<Rd>,<C7>,<CRm>,<Op2>MCRP15,0,<Rd>,<C9>,c0,<Op2>MRCP15,0,<Rd>,<C1>,<CRm>,<Op2>MRCP15,0,<Rd>,<C7>,<CRm>,<Op2>MRCP15,0,<Rd>,<C9>,c0,<Op2>高速缓冲区和写缓冲区38快速上下文切换技术通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成的虚拟地址到物理地址的重映射,从而提高系统的性能。快速上下文切换技术39快速上下文切换技术原理(FCSE)如果两个进程占用的虚拟地址空间有重叠,系统在这两个进程之间进行切换时,必须进行虚拟地址到物理地址的重映射,包括重建TLB,清除cache,整个工作需要带来巨大的系统开销。而快速上下文切换技术的引入避免了这种开销。FCSE位于CPU和MMU之间,他的责任就是将不同进程使用的相同的虚拟地址映射为不同的虚拟空间,使得在上下文切换时无需重建TLB等。 如果两个进程使用了同样的虚拟地址空间,则对CPU而言,两个进程使用了同样的虚拟地址空间,FCSE机构对各个进程的虚拟地址进行变换,这样系统中除了CPU之外的部分看到的是经过上下文切换机构变换后的虚拟地址。快速上下文切换技术40在ARM系统中,4G的虚拟地址空间被分成128个进程空间块,每个空间块中可以包含一个进程,该进程可以使用的虚拟地址空间为0~0x01ff’ffff。编号为I的进程空间块中的进程实际使用的虚拟地址空间为: (I*0x0200’0000)~(I*0x0200’0000+0x01ffffff)快速上下文切换技术原理(FCSE)快速上下文切换技术助记符说明操作条件码位置STRRd,addressing存储字数据[addressing]←Rd,addressing索引STR{cond}STRBRd,addressing存储字节数据[addressing]←Rd,addressing索引STR{cond}BSTRTRd,addressing以用户模式存储字数据[addressing]←Rd,
addressing索引STR{cond}TSTRBTRd,addressing以用户模式存储字节数据[addressing]←Rd,addressing索引STR{cond}BTSTRHRd,addressing存储半字数据[addressing]←Rd,addressing索引STR{cond}HARM存储器访问指令——单寄存器存储LDR/STR指令用于对内存变量的访问、内存缓冲区数据的访问、查表、外围部件的控制操作等。若使用LDR指令加载数据到PC寄存器,则实现程序跳转功能,这样也就实现了程序散转。所有单寄存器加载/存储指令可分为“字和无符号字节加载存储指令”和“半字和有符号字节加载存储指令。LDR和STR——字和无符号字节加载/存储指令
LDR指令用于从内存中读取单一字或字节数据存入寄存器中,STR指令用于将寄存器中的单一字或字节数据保存到内存。指令格式如下:ARM存储器访问指令——单寄存器存储LDR{cond}{T} Rd,<地址>;将指定地址上的字数据读入RdSTR{cond}{T} Rd,<地址>;将Rd中的字数据存入指定地址
LDR{cond}B{T} Rd,<地址>;将指定地址上的字节数据读入RdSTR{cond}B{T} Rd,<地址>;将Rd中的字节数据存入指定地址
其中,T为可选后缀。若指令有T,那么即使处理器是在特权模式下,存储系统也将访问看成是在用户模式下进行的。T在用户模式下无效,不能与前索引偏移一起使用T。ARM存储器访问指令——单寄存器存储LDR和STR——字和无符号字节加载/存储指令编码指令执行的条件码I为0时,偏移量为12位立即数,为1时,偏移量为寄存器移位P表示前/后变址U表示加/减B为1表示字节访问,为0表示字访问W表示回写为指令的寻址方式Rd为源/目标寄存器Rn为基址寄存器L用于区别加载(L为1)或存储(L为0)ARM存储器访问指令——单寄存器存储LDR和STR——字和无符号字节加载/存储指令
LDR/STR指令寻址非常灵活,它由两部分组成,其中一部分为一个基址寄存器,可以为任一个通用寄存器;另一部分为一个地址偏移量。地址偏移量有以下3种格式:立即数。立即数可以是一个无符号的数值。这个数据可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0,#0x12]
;R1<-[R0+0x12]寄存器。寄存器中的数值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0,R2]
;
R1<-[R0+R2]
LDRR1,[R0,-R2];R1<-[R0-R2]寄存器及移位常数。寄存器移位后的值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0,R2,LSL#2]
;R1<-[R0+R2*4]
ARM存储器访问指令——单寄存器存储
从寻址方式的地址计算方法分,加载/存储指令有以下4种格式:零偏移。 如:LDRRd,[Rn]
前索引偏移。 如:LDRRd,[Rn,#0x04]!程序相对偏移。 如:LDRRd,labe1
后索引偏移。 如:LDRRd,[Rn],#-0x04注意:必须保证字数据操作的地址是32位对齐的。LDR和STR——字和无符号字节加载/存储指令LDR和STR——半字和有符号字节加载/存储指令
这类LDR/STR指令可加载有符号半字或字节,可加载/存储无符号半字。偏移量格式、寻址方式与加载/存储字和无符号字节指令相同。ARM存储器访问指令——单寄存器存储LDR{cond}SBRd,<地址>;将指定地址上的有符号字节读入RdLDR{cond}SHRd,<地址>;将指定地址上的有符号半字读入RdLDR{cond}HRd,<地址>;将指定地址上的半字数据读入RdSTR{cond}HRd,<地址>;将Rd中的半字数据存入指定地址注意:1.有符号位半字/字节加载是指用符号位加载扩展到32位,无符号半字加载是指用零扩展到32位;2.半字读写的指定地址必须为偶数,否则将产生不可靠的结果;ARM存储器访问指令——单寄存器存储LDR和STR——半字和有符号字节加载/存储指令编码指令执行的条件码I为0时,偏移量为12位立即数,为1时,偏移量为寄存器移位P表示前/后变址U表示加/减W表示回写为指令的寻址方式Rd为源/目标寄存器Rn为基址寄存器L用于区别加载(L为1)或存储(L为0)S为1表示有符号访问,为0表示无符号访问H为1表示半字访问,为0表示字节访问LDR和STR指令应用示例:1.加载/存储字和无符号字节指令LDR R2,[R5] ;将R5指向地址的字数据存入R2STR R1,[R0,#0x04] ;将R1的数据存储到R0+0x04地址LDRB R3,[R2],#-1 ;将R2指向地址的字节数据存入R3,R2=R2-1STRB R0,[R3,-R8ASR#2];R0->[R3-R8/4],存储R0的最低有效字节2.加载/存储半字和有符号字节指令LDRSBR1,[R0,R3] ;将R0+R3地址上的字节数据存入R1,
;高24位用符号扩展LDRHR6,[R2],#2 ;将R2指向地址的半字数据存入R6,高16位用0扩展
;读出后,R2=R2+2STRHR1,[R0,#2]! ;将R1的半字数据保存到R0+2地址,
;只修改低2字节数据,然后R0=R0+2ARM存储器访问指令——单寄存器存储(3)LDR和STR双字:加载/存储两个相邻的寄存器,64位双字。其句法有4种:Op{cond}DRd,[Rn]零偏移Op{cond}DRd,[Rn,offset]{!}前索引偏移Op{cond}DRd,label程序相对偏移Op{cond}D{T}Rd,[Rn],offset后索引偏移
ARM存储器访问指令——单寄存器存储
其中:
Rd加载/存储寄存器中的一个,另一个是R(d+1)。Rd必须是偶数寄存器,且不是R14。
Rn除非指令为零偏移,或不带写回的前索引,否则,Rn不允许与Rd和R(d+1)相同。labellabel必须是在当前指令的上下252字节范围内。例如:LDRDR6,[R11];R6←[R11],R7←[R11+4]STRDR4,[R9,#24];R4→[R9+24],R5→[R9+28]ARM存储器访问指令——单寄存器存储助记符说明操作条件码位置LDM{mode}Rn{!},reglist多寄存器加载reglist←[Rn...],Rn回写等LDM{cond}{mode}STM{mode}Rn{!},reglist多寄存器存储[Rn...]←reglist,Rn回写等STM{cond}{mode}ARM存储器访问指令——多寄存器存取
多寄存器加载/存储指令可以实现在一组寄存器和一块连续的内存单元之间传输数据。LDM为加载多个寄存器;STM为存储多个寄存器。允许一条指令传送16个寄存器的任何子集或所有寄存器。它们主要用于现场保护、数据复制、常数传递等。ARM存储器访问指令——多寄存器存取
多寄存器加载/存储指令格式如下:LDM{cond}<模式>Rn{!},reglist{^}STM{cond}<模式>Rn{!},reglist{^}cond:指令执行的条件;模式:控制地址的增长方式,一共有8种模式;!:表示在操作结束后,将最后的地址写回Rn中;reglist
:表示寄存器列表,可以包含多个寄存器,它们使用“,”隔开,如{R1,R2,R6-R9},寄存器由小到大排列;^:可选后缀。允许在用户模式或系统模式下使用。它有以下两个功能:1)若op是LDM且寄存器列表包含R15时,那么除了正常的多寄存器传送外,还将SPSR也复制到CPSR中。这用于异常处理返回,仅在异常模式下使用。2)数据传入或传出的是用户模式下的寄存器,而不是当前模式的寄存器。ARM存储器访问指令——多寄存器存取LDM和STM——多寄存器加载/存储指令编码指令执行的条件码S对应于指令中的”^”符号P表示前/后变址U表示加/减W表示回写寄存器列表Rn为基址寄存器L用于区别加载(L为1)或存储(L为0)ARM存储器访问指令——多寄存器存取
多寄存器加载/存储指令的8种模式如下表所示,右边四种为堆栈操作、左边四种为数据传送操作。模式说明模式说明IA每次传送后地址加4FD满递减堆栈IB每次传送前地址加4ED空递减堆栈DA每次传送后地址减4FA满递增堆栈DB每次传送前地址减4EA空递增堆栈数据块传送操作堆栈操作
进行数据复制时,先设置好源数据指针和目标指针,然后使用块拷贝寻址指令LDMIA/STMIA、LDMIB/STMIB、LDMDA/STMDA、LDMDB/STMDB进行读取和存储。进行堆栈操作操作时,要先设置堆栈指针(SP),然后使用堆栈寻址指令STMFD/LDMFD、STMED/LDMED、STMFA/LDMFA和STMEA/LDMEA实现堆栈操作。ARM存储器访问指令——多寄存器存取数据块传送指令操作过程如右图所示,其中R1为指令执行前的基址寄存器,R1’则为指令执行后的基址寄存器。R5R6R7R1R1’指令STMIAR1!,{R5-R7}4008H4004H4000H4014H4010H400CHR5R6R7R1R1’指令STMDAR1!,{R5-R7}40
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑公司制订管理制度
- 接种门诊安全管理制度
- 涉案风险账户管理制度
- 县志办单位管理制度
- 县桥梁养护管理制度
- 精心设计的中级社会工作者试题及答案
- 礼品采购及管理制度
- 动物房消防管理制度
- 红酒贸易仓库管理制度
- 劳动安全与管理制度
- 2024年度影视剧本购买合同:制片公司与编剧之间关于剧本购买的协议3篇
- JGJ 58-2008电影院建筑设计规范
- 甘肃省兰州市2022年中考英语真题试卷(含答案)
- 220kVGIS安装施工方案
- 新生儿科等多部门QC小组运用PDCA降低新生儿内科血培养标本阳性率品管圈成果汇报
- 2024年湖南省高考化学试卷真题(含答案解析)
- 气压传动课件 项目三任务二 气动三段速控制回路搭建与调试
- 1.5物业费催收法律服务合同
- 无人机植保技术课件:无人机植保经验与案例
- 职业卫生练习题库+答案
- 小学一年级体育教案全集
评论
0/150
提交评论