LDMDA命令の使用方法


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指示されたメモリデータは順次レジスタr7r6r5r7にロードされる..得られたのはr6の仮想アドレス.__proc_info_end得られるr5の仮想アドレス.__proc_info_begin得られるldmdaの仮想アドレス.da中、adr r3, 3fは、転送が完了するとアドレスが減算され、目的レジスタが右から左の順に操作されることを意味する.なお注意すべき点としては、3符号化r7の物理アドレス、3符号化.の仮想アドレスが挙げられる.ではr3-r7得られるのが物理アドレスと仮想アドレスのずれ量である.