返回首页
当前位置: 主页 > 操作系统 > Linux教程 >

STMFD和LDMFD指令详解与个人理解分析

时间:2015-07-17 10:29来源:电脑教程学习网 www.etwiki.cn 编辑:admin

LDM/STM指令主要用于现场保护,数据复制,参数传送等。

STMFD指令

STMFD  Rn{!},{reglist}{^}

STMFD指令解释

STMFD指令解释

举例说明:

STMFD SP!,{R0-R7,LR}

对于这条指令伪代码的解释,大体是这样的:

SP = SP - 9×4;

address = SP;

for i = 0 to 7

Memory[address] = Ri;

address  = address + 4;

Memory[address] = LR;

假设此时SP地址为: 0x40000460,由前面解释伪代码可得下图(蓝色填充区为地址)

堆栈示意

堆栈示意

 LDMFD 指令

LDMFD  Rn{!},{reglist}{^}

这条指令的意思是以Rn为基址(起始地址),取值写入寄存器列表。

LDMFD指令解释

LDMFD指令解释

举例说明:

LDMFD SP!,{R0-R7,PC}^

对于这条指令伪代码的解释,大体是这样的:

address = SP;

for i = 0 to 7

Ri = Memory[address ,4]

address = address + 4;

SP = address;

假设此时SP地址为: 0x4000043C,由前面解释伪代码可得下图(蓝色填充区为地址):

LDMFD指令堆栈示意

LDMFD指令堆栈示意

蓝色标注的SP为执行指令前的SP地址,红色标注的SP是执行指令后的SP地址。

顶一下
(1)
50%
踩一下
(1)
50%
标签(Tag):Android 操作系统 Ubuntu Linux Unix fedora debian
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐内容