2011-11-22 89 views
4

我想不通这个ARM指令做什么:困惑的ARM指令

strd.w   r0, r1, [r2] 

我知道这是一个存储指令,其在*r2存储的东西,但我不完全知道是什么。为什么有两个源寄存器(r0r1)以及d.w后缀是什么意思?

+0

谷歌搜索发现这一点:http://books.google.co.uk/books?id=mb5d_xeINZEC&pg=PA75&lpg=PA75&dq=%22strd.w%22&source= BL&OTS = kNhBZGIQc8与SIG = 11-i1pLOmH2W83r1MSAtWbrIUeA&HL = EN&EI = BfPLTrrFGYig8QOm8_wD&SA = X&OI = book_result和CT =导致与resnum = 4&VED = 0CEAQ6AEwAw#v = onepage&q =%22strd.w%22&F =假 – OrangeDog

+2

而这里的参考:http://infocenter.arm.com/帮助/ index.jsp的?主题=/com.arm.doc.dui0204j/CIHGCADB.html – onemasse

回答

8

该函数将两个32位寄存器的64位内容存储到内存中。 8字节块从r2中保存的地址开始存储。前四个字节来自r0,来自r1的第二个四字节。

大致相当于C将是:

int32 *ptr=(int32 *) r2; 
*(ptr) = r0; 
*(ptr+1) = r1; // 'ptr+1' adds four bytes to the memory position