LDMDA命令の使用方法
803 ワード
linuxカーネルでは、ファイルarch/arm/kernel/head-common.Sに次のコードがあります.
このうち、
__lookup_processor_type:
adr r3, 3f
ldmda r3, {r5 - r7}
......
.long __proc_info_begin
.long __proc_info_end
3: .long .
.long __arch_info_begin
.long __arch_info_end
このうち、
ldmda r3, {r5 - r7}
意味r3
指示されたメモリデータは順次レジスタr7
、r6
、r5
、r7
にロードされる..
得られたのはr6
の仮想アドレス.__proc_info_end
得られるr5
の仮想アドレス.__proc_info_begin
得られるldmda
の仮想アドレス.da
中、adr r3, 3f
は、転送が完了するとアドレスが減算され、目的レジスタが右から左の順に操作されることを意味する.なお注意すべき点としては、3
符号化r7
の物理アドレス、3
符号化.
の仮想アドレスが挙げられる.ではr3-r7
得られるのが物理アドレスと仮想アドレスのずれ量である.