SLEEP命令の実装

こんにちは、めのんです!

AVRには特殊な命令がいくつかあります。
それらはCPUの機能そのものというよりマイコン内部のCPU周辺回路に依存する部分が大きいので、今回は何もしない命令として扱うことにします。

SLEEP命令の実装

SLEEP命令もそんな命令のひとつです。
省電力のための命令だと思いますが、命令セットシミュレータでは正確に再現できませんのでNOP命令と同じで何もしないことにします。

一応、いつものように「AVR®命令一式手引書」から各命令の説明を引用しておきます。

コードもNOPといっしょなので簡単です。

static void sleep(atmega328_t *cpu, uint16_t op)
{
  ++cpu->clock;
}

op_tableへの登録

次に、いつものようにop_tableに登録します。

opcode.phpに次のコードを追加して実行してあげればOKです。

$opcode_table[0b1001_0101_1000_1000] = 'sleep';

今回は65,536命令のうちの1個しか埋まりませんでしたが、これも必要な命令です。

それでは次回またお会いしましょう!