こんにちは、めのんです!
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個しか埋まりませんでしたが、これも必要な命令です。
それでは次回またお会いしましょう!