首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >手臂装配-指令是否等效?

手臂装配-指令是否等效?
EN

Stack Overflow用户
提问于 2015-03-30 22:00:09
回答 2查看 293关注 0票数 0

"stmdb r3!,{sp,lr}“是否等同于序列?

  1. r3,#-4!
  2. r3,#-4!

"ldmia r0!,{sp,lr}“是否等同于序列?

  1. ldr sp,r0,#4
  2. ldr lr,r0,#4
EN

回答 2

Stack Overflow用户

发布于 2015-03-30 22:26:55

我误解了stmdb的功能。"stmdb r3!,{sp,lr}“的等效值将是替换顺序"lr”,后面是"sp":

  • r3,#-4!
  • r3,#-4!

谢谢你,维杰

票数 0
EN

Stack Overflow用户

发布于 2015-03-31 09:39:35

stmdb r3!,{sp,lr}

r3,#-4!

r3,#-4!

stmdb r3!,{sp,lr} -在每次传输之前存储多个寄存器和取消地址。r3 -基本寄存器和!-将开始r3地址+ offcet写回r3 .DB -由于4种堆栈类型(全降堆栈、满升堆栈、空降序堆栈、空升空堆栈)。对于STM,DB对应于完全降序堆栈。因此sp -堆栈指针和lr -链接寄存器存储到内存中,内存由r3和r3 += sizeof(sp) + sizeof(ls)寻址。r3 += 8;

  1. r3指向某个内存地址。
  2. r3 -= 8;(4字节指令)将r3移动到较低的内存地址。递减r3.
  3. 存储订单lr-第一个sp-秒。进入R3-8-LR将被存储,而R3-4sp将被存储.
  4. r3 -点对端(r3+=8);

r3,#-4!(预索引变量)-将sp存储到r3-4内存地址并保存r3-=4;

str lr,r3,#-4!-将lr存储在(r3-4)-4中,保存r3-=4;

因此stmdb r3!,{sp,lr} -进入较高地址lr的位置。(str sp,r3,#-4!) + (str lr,r3,#-4!)重新定位到更高的地址。

介绍ARM汇编语言

r0!,{sp,lr} -加载多个增量之后。

从r0指向的内存中获取值,并将其保存到sp中。从内存中获取下一个值并保存到lr中。r0 += 8;

ldr sp,r0,#4 -从内存r0+4加载值到sp。(r0,#4) -后索引变量第一次加载,然后编辑r0,r0+=4.

ldr lr,r0,#4 -从内存r0+4加载值到lr.

将较高内存中的两个变体值复制到lr中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29357115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档