Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> STMFD和LDMFD指令詳解與個人理解分析

STMFD和LDMFD指令詳解與個人理解分析

日期:2017/2/7 14:30:10      編輯:Linux教程
 

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地址。

Copyright © Windows教程網 All Rights Reserved