非専門的シンギュラリティー研究所

無限に動き続けるシステムを表す方法を AI なども使って考えていきます。

2025-09-01から1ヶ月間の記事一覧

アセンブラ(23)

以下の関数をコンパイルした結果のアセンブリ言語の動作を確認できました。movem 命令の仕様が不明だったため修正に時間がかかりましたが、なんとか動くようになりました(まだ仕様は不明)。 楕円の描画 楕円の弧の描画 楕円の扇型の描画 角が丸い長方形の描…

中間報告(23)

このブログでやっていることは昔なら「まじめにやれ」と言われるようなことかもしれませんが、一人でやっているため誰も何も言ってこないので大丈夫です。現在は X68000 エミュレーターで動作するプログラムを作るためのシステムを考えることを主にやってい…

アセンブラ(22)

直線を描画する関数をコンパイルした結果の動作を確認できました。「X68000(21) - 非専門的シンギュラリティー研究所」でやったものを書き換えています。 void DirectDrawLine(HDC hdc, int x1, int y1, int x2, int y2, COLORREF color) { int w = x2 - x1;…

アセンブラ(21)

グラフィックス用のメモリーへの書き込みで描画できるようにします。そのため SetPixel 関数を以下の関数で置き換えます。 const int g_gwidth = 512; const int g_gheight = 512; int16_t g_gmemory[g_gheight][g_gwidth]; inline COLORREF SetPixel(HDC hd…

アセンブラ(20)

描画が実行できるようになりました。 実行例(長方形の描画) void DirectDrawRectangle(HDC hdc, int x1, int y1, int w, int h, COLORREF color) { for (int x = x1; x < x1 + w; ++x) { SetPixel(hdc, x, y1, color); SetPixel(hdc, x, y1 + h, color); } f…

アセンブラ(19)

倍精度浮動小数点数の加減乗除をコンパイルした結果が実行できるようになりました。 実行例(倍精度浮動小数点数の加算) double dadd(double x, double y) { return x + y; } これをコンパイルすると以下のようなアセンブリ言語のコードが得られます。 _Z4dad…

アセンブラ(18)

乗除算が実行できるようになりました。 実行例(乗算) int mul(int x, int y) { return x * y; } これをコンパイルすると以下のようなアセンブリ言語のコードが得られます。 _Z3mulii: move.l 8(%sp),-(%sp) move.l 8(%sp),-(%sp) jsr __mulsi3 addq.l #8,%sp…