RETI命令の実装 公開日:2021年5月29日 プログラミング命令セットシミュレータ開発 こんにちは、めのんです! 今回は割り込みから元の場所に戻るためのRETI命令を実装することにします。 割り込みについてはここでは詳しく解説しませんので、もし興味ある方がいらっしゃいましたらご自身で調べてくださいね。 RE […] 続きを読む
LPM命令の実装 公開日:2021年5月22日 プログラミング命令セットシミュレータ開発 こんにちは、めのんです! 今回実装するLPM命令はかなり特殊な命令です。 慣れないとちょっと難解かもしれませんが、がんばって実装していきます。 AVRはハーバードアーキテクチャですので、プログラムはROMを読み書き可能な […] 続きを読む
SWAP命令の実装 更新日:2021年5月22日 公開日:2021年5月18日 プログラミング命令セットシミュレータ開発 こんにちは、めのんです! 平日は簡単な命令をコツコツ片付けていくことにします。 今回実装するのはSWAP命令です。 SWAP命令の実装 SWAPというと2つの汎用レジスタの値を交換するんじゃないかと思われる方もいらっしゃ […] 続きを読む
IJMP命令とICALL命令の実装 公開日:2021年5月16日 プログラミング命令セットシミュレータ開発 こんにちは、めのんです! 今回実装する命令はZレジスタでアドレスを指定する分岐命令です。 XレジスタやYレジスタではこういうことはできませんので、AVRではZレジスタはちょっと特別な存在ですね。 IJMP命令の実装 まず […] 続きを読む
CALL命令、RCALL命令、RET命令の実装 公開日:2021年5月9日 プログラミング命令セットシミュレータ開発 こんにちは、めのんです! 今回はサブルーチンの呼び出しに必要な3つの命令を実装します。 高級言語でいう関数、プロシージャ、メソッドといった機能はすべてサブルーチンが基礎になっています。 機械語のサブルーチンはすごくシンプ […] 続きを読む
PUSH命令とPOP命令の実装 公開日:2021年5月6日 プログラミング命令セットシミュレータ開発 こんにちは、めのんです! 今回はスタック操作のためのPUSH命令とPOP命令を実装します。 スタックは基本的なデータ構造でよく使われています。 CPUがハード的に実現しているスタックはすごく簡単で、RAM上の次にPUSH […] 続きを読む
LD(LDD)命令とST(STD)命令の実装 公開日:2021年5月4日 プログラミング命令セットシミュレータ開発 こんにちは、めのんです! ゴールデンウィークなのでちょっとペースがズレちゃいましたけど、また少しずつ進めていくことにします。 今回は前回の続きで、Yレジスタ版とZレジスタ版のLD命令とST命令、そしてLDD命令とSTD命 […] 続きを読む
LD命令とST命令の実装 更新日:2021年5月4日 公開日:2021年4月25日 プログラミング命令セットシミュレータ開発 こんにちは、めのんです! 今回はそこそこ大物を片付けていきます。 メモリから汎用レジスタへのロードと、逆に汎用レジスタからメモリへのストアをXレジスタを使って行う命令です。 Cのポインタは要するにこういうことなので、アセ […] 続きを読む
MOV命令とMOVW命令の実装 公開日:2021年4月17日 プログラミング命令セットシミュレータ開発 こんにちは、めのんです! 相変わらずのワンパターンですが淡々と実装を進めていきます。 今回はレジスタ間の転送命令を実装していきます。 MOV命令の実装 まずはMOV命令です。 これは8ビットの汎用レジスタの値を別の汎用レ […] 続きを読む
LDS命令とSTS命令の実装 公開日:2021年4月11日 プログラミング命令セットシミュレータ開発 こんにちは、めのんです! 今作っている命令セットシミュレータも少しずつ命令が増えています。 でもまだまだで、今までの状態では満足にRAMへの読み書きすらできませんでした。 今回の追加分で、RAMへの最低限の読み書きができ […] 続きを読む