我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019跑狗图高清彩图 > 指令和数据 >

ARM指令集问题:满递减与空递减

归档日期:08-07       文本归类:指令和数据      文章编辑:爱尚语录

  ARM指令的多数据传输(STM、LDM)中,提到:多寄存器的Load和Store指令分为2组:一组用于数据的存储与读取,对应于IA、IB、DA、DB,一组用于堆栈操作,对应于FD、ED、FA、EA,两组中对...

  ARM指令的多数据传输(STM、LDM)中,提到:多寄存器的Load和Store指令分为2组:一组用于数据的存储与读取,对应于IA、IB、DA、DB,一组用于堆栈操作,对应于FD、ED、FA、EA,两组中对应的指令含义相同。

  而满递减堆栈的定义是:堆栈随着存储器地址的减小而向下增长,基址寄存器指向存储有效数据的最低地址或者指向第一个要读出的数据位置。

  其中“基址寄存器指向存储有效数据的最低地址或者指向第一个要读出的数据位置”与先前LDMIA指令完成的结果矛盾,因为此指令完成后基址寄存器指向的并不是与R9对应的数据的位置,请问如何解释?

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  首先你要理解“基址寄存器指向存储有效数据的最低地址或者指向第一个要读出的数据位置”的概念

  当然是0x100,因为最后读出来的是8,在读出来以后,R13增加4(32bit数据是+4地址的偏移量),这时候R13就是0x100

  当然是对的,因为这时候9就是栈的底部了,R13指向9的地址0x100不对吗?

  所以你要理解这个最低有效数据的概念,1-8都出栈了,9就是第一个有效数据

本文链接:http://f-taiken.net/zhilingheshuju/615.html