作者manlike ( )
看板ASM
标题Re: [问题] 关於ARM组语一点小问题!
时间Wed Oct 6 23:55:25 2010
※ 引述《wait (都不知道该说啥了)》之铭言:
: 小弟最近刚接触ARM这方面组语
: 有点问题想请教:
: AREA TEST, CODE, READONLY
: ENTRY
: MOV R0 , #0x00008000
^ 这里应该是 9 吧?
: MOV R1 , #0x00000009
: MOV R2 , #0x00000008
: MOV R3 , #0x00000007
: STMIB R0!, {R1-R3}
: MOV R1,#1
: MOV R2,#2
: MOV r3,#3
: LDMDA R0!, {R1-R3}
: END
: 在STMIB R0!, {R1-R3} 记忆体中应该是
: [0x0000 9004]=9
: [0x0000 9008]=8
: [0x0000 900C]=7
: 然後R0 = 0x0000 800C
: 再从LDMDA R0!, {R1-R3} 取回的时候不是应该:
: [0x0000 900C]=9
: [0x0000 9008]=8
: [0x0000 9004]=7
: 但实际用AXD去RUN 刚好是7 8 9的组合
: 请问各位前辈我想法到底哪边错了呢!?
根据这个教学
http://www.peter-cockerell.net/aalp/html/ch-3.html
「Remember that registers are always stored lowest at lowest address」
意思为「编号较小的暂存器会存到较低的记忆体位址」
或「较低的记忆体位址内容会载入到编号较小的暂存器」
所以 r3 = [0x0000 900C] = 9
r2 = [0x0000 9008] = 8
r1 = [0x0000 9004] = 7
r0 = 0x00009000
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.136.48.91
1F:推 wait:感谢大大解决小弟我的问题^^" 10/06 23:59