指纹识别安全芯片
ARM LDRSTR LDMSTM 指令
时间: 2023-08-26 19:32:44 |   作者: 指纹识别安全芯片

  关于LDM和STM的阐明,见别的一个阐明文件,阐明晰这两个文件用于栈操作时的留意事项。

  便是把R2所指向的存储单元的内容的值(一个memory地址内的值),读取到R1中(一个register)

  便是把寄存器R1中的内容“保存”到R2所指向的存储的单元中(一个memory地址)。

  明显,这两条句子都有个特色,便是寄存器写在前面(左面)而内存地址写在后边(右边),数据传送的方向则是恰好相反的。

  下面临LDM和STM介绍,运用sp来介绍,由于实践运用中,和sp一同运用更多。

  尽管貌似是LDR的晋级,可是,千万要留意,这个指令运转的方向和LDR是不相同的,是从左到右运转的。

  其间仓库指针一般对应于SP,留意SP是寄存器R13,实践用到的却是R13中的内存地址,仅仅该指令没有写为[R13],

  一起,LDM指令中寄存器和内存地址的方位相关于前面两条指令改变了,下面的比如:

  意思为:把sp指向的3个接连地址段(应该是3*4=12字节(由于为r0,r1,r2都是32位))中的数据拷贝到r0,r1,r2这3个寄存器中去

  (假如这一个区域还不明白的话,能够参看我文章最初说到的链接,里边有具体的图解)

  (4)STM:S的意义仍然是STORE,与LDM是配对运用的,其指令格局上也类似,即差异于STR,是将仓库指针写在左面,而把寄存器组写在右边。

  明显,这两个仓库操作指令也有个特色,便是寄存器组写在后边(右边)而仓库指针写在前面(左面),

  并且实践上运用的是仓库指针中的内存地址,这一点与前面两条指令是有差异的。

  (弥补:sp后边的!,作用是指指令履行完后,对应的地址值赋给sp,关于例程的SDM,是说最终sp的值应该是sp+3*4=sp+12)

  这四条指令中,前面两条和后边两条其实联络不多,反而是不同很大,因而,能够直接把这两组指令区别开来,认为它们之间没有联络,这样防止误解。

  STM和LDM的主要用途是现场维护、数据、参数传递等,其形式有8种,如下:

  在仓库操作时,常常过错认为运用STMFD满递减将寄存器压入仓库后,在弹出数据的时分应运用LDMFA。

  可是FD和FA仅用于指示现在操作的仓库是何种形式(仓库共有四种形式),FD指明现在的仓库是满递减仓库,

  则数据入栈时的指令为STMFD,那么数据出栈时的指令对应的为LDMFD,而不是LDMFA。

  那么STMFD SP!,{R3,R2,R1}履行后的仓库次序是不是刚好和上面的仓库次序相反,实在的状况时这两个指令履行后的仓库数据次序相同,

  即使你在指令STMFD SP!,{R3,R2,R1}中故意“组织”了寄存器入栈次序,而在编译时编译器又从头做了处理,打乱了你希望的数据入栈次序。

  站点相关:归纳资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式体系轿车电子消费电子数据处理视频教程电子百科其他技能STM32MSP430单片机资源下载单片机习题与教程

© 2021 永乐国际官方网站登录-永乐官网下载 版权所有 | 备案号:粤ICP备12074344号