例えば、黒い画面に白い1ドットの点を打つとする
ここでハードウェアのVRAMと画面が直結していれば分かりやすい
ポインタには確保したメモリ領域の先頭のアドレス番地が入っている
ちょっと語弊があるけど、そのアドレス番地に1を入れれば画面に白い点が表示される、みたいな感じである
自分が子供の頃のMSXとかZX Spectrumだったらそうだった
あと、PC-9801も文字のためのVRAMと画像のためのVRAMがあったんだったかな
98も同じようにメモリに何か直接書けば画面に表示されたはず
あと、その画像のVRAMの上に文字のVRAMを表示させることで、
例えば背景を輝度を下げて表示させ、その上でテキストエディタで作業するとかできたはず
ファミコンとかのカートリッジも挿入すればあれは何らかのメモリ空間に格納されるのだと思われる
カートリッジが挿入されていれば、そのメモリ空間の最初からCPUに実行させればいい
そうすればカートリッジの中のROMに書かれているゲームが動くはずだ
しかし、近年のOSで例えば生のVRAMを直接いじるなんてことはあり得ない
生のVRAMはグラフィクスカードの中などに入っており、それは近年のグラフィクスカード上のGPUやOSによって複雑に管理されている
だから、Windowsなどでゲームを作るときは、まずOSにお願いして、仮想的なVRAMのような領域をもらわなければならない
何をするにもまずはOSのお伺いを立てて、OSがメモリなどのリソースを切り出して与えてくれる
返すときも図書館のように返すのが礼儀であるが、ぶち切りしてもOSは尻拭いをしてくれる
が、尻拭いをしてくれない可能性もあるため、ぶち切りした後に挙動がおかしくなることもあるかもしれない
そう、なんかよく分からんが調子悪いなあ、みたいなことが起こりやすくなった気がする
マシンが重いなあと思ったら、別のプロセス、Windowsで言うタスクマネージャーをチェックする
そして、CPUの使用率やメモリを食っているプロセスを見つけ、殺していい場合はkillしてみる
マルチプロセスで動作することで重くなることもあるし、何か共通のリソース、ファイルなどを奪い合う、デッドロックとかそういうことも起こり得る
しかし、プログラムから直接ハードウェアを動かしている、と実感することは減っている気がする
それはそれで良いことなのだけど、その実感がないことが初学者を混乱させていないだろうかと思った
ハード寄りと言っても、Arduinoでもラズパイでも自分にはあまりそういう実感がない
特にラズパイはLinuxが動いている時点でLinuxが良きにはからってくれるためことさら実感がない
Arduinoはぶ厚すぎるんだよなあ CでAVRベアメタルをもう少し書きやすくしたような学習用の環境があっても良さそう
ラズパイだってデスクトップ切って/dev/fb0に直書きすればなんでも出るやん と思ったけど言いたいことの趣旨はわかる
機械制御用のリレーラダー楽しい。
今だとFPGAの評価ボードとか買って、vhdlとか書きながら遊ぶのがいいんだろうか
近年のOSで例えば生のVRAMを直接いじるなんてことはあり得ない 直接というと少し語弊があるがシェーダーのコードはそれに近いことをやってる 時代が進むことで逆にGPUを直接制御する...
ZXスペクトラムとかなつかーしーなーおい。 まぁ当時ですら、VRAMに立てられたビットがどうやってブラウン管電子銃のスキャン時に特定の場所を光らせるのか、ましてやキャラクタジェ...
GUIはコンピュータ使用のハードルを下げたけど、メタファーを多用しすぎて実体とはかけ離れてしまっている コマンドラインだけでLinuxを運用したりしているとソフトウェアの部分では...
今時はOSを自作するのがこれじゃないかなーって思った。 今は時間とガッツが足りないのでOSを自作するというジャンルがあるのを知っていても手を出せていないけれど、中高生のころに...
画面が点灯して表示されることには疑問持たなかったんだ、ふーん、そうなんだ、ふーん って言ってマウントとることにしている 次は交流の話な
今でも8ビットのシングルボードマイコンで勉強する意義は十分あると思う。Z80でも6502でもいいから。
Z80懐かしい。 横だけど、 input -> process ー> output (read) (write) processに当たる if とか while だけ書いてる奴いたけど input、outputを意識してもらいたいね。
そんなレイヤむしろわかりづらいしほとんどの初学者は知る必要もないのでは 端末スペック上がってハードウェアに近いレイヤは触れなくていいんだから、ウェブで CSS 書いて 1px × 1px ...