11

AVR 命令セットを見ると、2010 年に追加された 4 つの命令があります。

LAC load and clear
LAS load and set
LAT load and toggle
XCH load and exchange
  1. どのチップにこれらの指示があるか知っている人はいますか

  2. これらの手順をサポートするツール

  3. 彼らが何をするかについての詳細情報

    (Z) ← Rd v (Z), Rd ← (Z)

それは、Rd と (Z) が同じ値を取得することを意味しますか、それとも、Rd は Z によって指されたものの事前に変更された値を取得しますか?

4

2 に答える 2

4

これらはおそらく現在の(最初の質問の時点で)チップにはありませんが、すべて共通のテーマ、つまりアトミックメモリ操作を持っています。それらの目的は通常、スレッド間の同期であり、命令セット レベルでそれらを含めることは、おそらく Atmel がマルチコア AVR チップの発売を計画していることを示しています。それらが指定されたので、ツール ベンダーはすでにそれらをアセンブラに追加できますが、チップに命令が実装されるまでは大したことはしません。(編集: 結局のところ、他のコアは USB 周辺機器であり、CPU ではありません。その情報を提供してくれた avakar に感謝します。)

Atmel AVR 8-bit Instruction Set Manualから読んだ動作:

LAC - ロードとクリア。メモリの内容 *Z をレジスタ Rd にロードすると同時に、Rd に設定された *Z のビットをクリアします。

LAS - Load And Set は、レジスタに設定されたメモリ位置のビットを同時に設定し、メモリ位置の以前の内容をレジスタにロードします。たとえば、単一ビットのミューテックスに非常に役立ちます。

LAT - ロードとトグル。LAS と同様ですが、ビットごとの OR の代わりに、ビットごとの xor を使用してビットを切り替えます。

XCH - 交換; メモリとレジスタの内容を交換するだけです。

それらはすべて RAM アクセス命令であり (2014 年 7 月参照状態では 2 サイクルかかります)、操作を組み合わせて、RAM を必要とするコードを現在よりも高速に作成することもできます。

于 2012-01-25T14:06:40.973 に答える
0

小さいながらも強調すべき重要な詳細: LAS、LAC、および LAT 命令は、Z が「実際の」SRAM を指している場合にのみ機能します。それは(メモリマップされた)レジスタなどではありません。したがって、実際、これらは独自の(OS)データまたはXMega USBモジュールのいずれかに役立ちますが、他の周辺機器やモジュールには役立ちません。

残念ですが (たとえば、PMIC.CTRL フラグを操作するのに非常に便利なので)、実際には機能しません。テスト済み。LAS、LAC、および LAT は、メモリ マップド レジスタに適用された場合、XCH (Rd と (Z) の間の交換ですが、ビットの調整はありません) と同じ効果があるようです。

于 2017-01-20T20:58:22.087 に答える