2019-05-01から1ヶ月間の記事一覧
目次ページに戻る / 前 / 次 前回からの差分をまとめて見る 前々回と前回でいろいろ片付いたので引数やります! 引数はスタックに置いて渡すそうです! まず引数を1個だけ使うのをやってみます。 次のようにサブルーチン呼び出し(call)の直前でスタックに …
目次ページに戻る / 前 / 次 前回からの差分をまとめて見る 道具が用意できたので引数渡しをやりたい! のですが、今回はリファクタリング回にします。 前回やっつけで追加した copy_sp_to_bp と copy_bp_to_sp を整理して、 せっかくのリファクタリング回な…
目次ページに戻る / 前 / 次 前回からの差分をまとめて見る さて、ダンプ表示が改善されたところで次に進みます。 call, ret で(多段の)サブルーチン呼び出しができたところまでやったので…… 次はサブルーチンに引数で値を渡せるようにします (ここらへん…
目次ページに戻る / 前 / 次 前回からの差分をまとめて見る さて、多段のサブルーチン呼び出しなんかやったりして、だんだん育ってきました。 それに連れてちょっとずつプログラムも長くなってきて、実行時の動きに不満が出てきましたので、 今回は本題の方…
目次ページに戻る / 前 / 次 前回からの差分をまとめて見る 前回簡単なサブルーチンをやりましたが、 今回はサブルーチンからまた別のサブルーチンを呼ぶ、 というのをやってみたいです。 これも普通にできてほしい。 今の状態ではこれはできません。 なぜか…
目次ページに戻る / 前 / 次 前回からの差分をまとめて見る どんどんプログラムっぽくしていきましょう。 プログラムといえばサブルーチン! サブルーチンやりましょう! 最初は簡単なのがいいので、 reg_a に値をセットするだけの サブルーチンをやってみま…
目次ページに戻る / 前 / 次 前回からの差分をまとめて見る さて、機械語コードをいくつか書いてきて、 ジャンプ先のアドレスを調べて修正するのに慣れてきた一方で、だんだん面倒にもなってきました。 プログラムを修正するたびに調べるのも面倒だし、書き…
目次ページに戻る / 前 / 次 前回からの差分をまとめて見る 前回 compare と jump_eq を使っていきなりカウンタを作ってしまいましたが、 この2つがあれば、 a = 0 b = 0 if a == b c = 2 else c = 3 end a = 4 みたいな普通の if 文っぽいことができそうで…
目次ページに戻る / 前 / 次 前回からの差分をまとめて見る チンタラやっててなかなか進みませんが一歩ずつやっていきます。 ループができるようになったら、次は条件分岐ですよ! プログラムといえば条件分岐! 条件分岐はどうやるかというと…… compare と …
目次ページに戻る / 前 / 次 前回からの差分 コンピュータのようなものを作っているので、 何か compute させようということで、足し算をさせて、 regチカのときのループと組み合わせてカウンタを作ってみます。 reg_a の値を 1, 2, 3, ... と増やしていくと…
目次ページに戻る / 前 / 次 前回からの差分: https://github.com/sonota88/vm2gol-v2/compare/02...03 プログラムといえばループ! ですね(※1)。 ループをやりましょうということで、 jump 命令を追加して regチカをやりましょう。 (※1 ……と書いてはいま…
目次ページに戻る / 前 / 次 前回からの差分: https://github.com/sonota88/vm2gol-v2/compare/01...02 第一回はさすがにあっさりすぎたのでどんどんやっていきます。 今の状態では vm = Vm.new した後に vm に対して外部から指示してあれこれやらせていて、…
目次ページに戻る / 次 とにかく始める とにかくやるのだぁ (『30日でできる! OS自作入門』 p14) とりあえずアレですよね? レジスタとメモリがあるんですよね? などといって適当に書き始めます。 慣れていてサッと始められるので Ruby です。 サッと始…
1 〜 41: vm2gol v2 製作メモ ちまちまいじって経緯をメモしていますが、とりあえず以下は無視して最新のスナップショット( main ブランチ)のソースを見てもらうのがいいんじゃないかなと思います。 42. ライフゲームのテスト 43. フォーマットなどいろい…
RubyでオレオレVMとアセンブラとコード生成器を2週間で作ってライフゲームを動かした話 の製作過程を雑にダラダラ書きます。 下書きっぽいものは用意しているので、打ち切りにならずに完走はできると思います(2019-10-05 完走しました!) 予定では全38回 …
Qiita に引っ越しました。 qiita.com