2016-09-29 10 views
1

documentation for LDP and STPが最後に感嘆符付きの例の指示を与える:A64にもA64命令の終わりに感嘆符の意味は何ですか?

LDP X8, X2, [X0, #0x10]! 

documentation about porting A32 PUSH/POP命令は、以下の例を示します:

PUSH {r0-r1} ---> STP X0, X1, [SP, #-16]! 
POP {r0-r1} ---> LDP X0, X1, [SP], #16 

ページのどちらがどのような感嘆符を説明指示手段の最後に。それは何ですか?

+1

アドレッシングモードに関する文書を読むことを考えましたか(!は、オフセットが 'sp'に追加されただけでなく、正しく呼び出すと' sp'に書き戻された結果でもあります)。 – fuz

+4

これは、過去30年間のARMプリインデクシングアドレッシングモードとまったく同じことを意味し、すべての命令セットリファレンスは、リンクしたドキュメントの適切なセクションを含みます...(ヒント:6.3.4 ) – Notlikethat

答えて

6

!は、「レジスタライトバック」を意味します。ベースレジスタは転送のアドレスを計算するために使用され、に更新されます。あなたの例では

LDP X8, X2, [X0, #0x10]! 

X0修正ので、操作後:あなたは入れていない場合は

X0 = X0 + 0x10 

!X0を操作によって変更されていません。

増分が行われたときにPUSH/POPについての第二の例では、違いがある:アドレスSP-16

STP X0, X1, [SP, #-16]!店舗、及びSPがアドレスSPから

LDP X0, X1, [SP], #16負荷同様にデクリメントされ、転送後にSP+16SPを格納する。

+0

このドキュメントには、別のことが書かれています。http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/ch05s01s03.html '!'では、操作の前にターゲットレジスタがインクリメントされ、 '!' - afterは使用されません。 –

+0

リンクが正しくないようです。しかし、とにかく私はあなたが2つの書戻し書式、すなわち「LDR x1、[x0、#imm]!」または「LDR x1、[x0]、#imm」を比較していると思います。最初の形式は 'x0 +#imm'(前にインクリメント)でロードされ、2番目の形式は' x0'でロードされます。 – Dric512

+0

このリンクは正しいはずです:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/CJAIFJII.html –

関連する問題