質問: 題名に書かせていただいた通りPCのVRAMにアセンブリ言語でデータを書き込むことを考えた場合、 windowsの場合はwin32APIによって直接書き込むことは出来ないため、win32よ呼び出してVRAMに書き込みたいデータを渡して、win32がVRAMにデータを書き込むことで画面に文字や色が表示されると思います。 しかし、Linuxの場合はOS自体がオープンソースであるため、VRAMにデータを書き込む過程をアセンブリプログラムで見れるのでしょうか? 「書き込む」部分アセンブリプログラムで見れるかをお尋ねしたいです。 printfに関しては文字を表示する際に関係しているため質問をわかりやすくしようとしたつもりがかえってわかりにくい内容になってしまいました。すいませんでした。 どうかよろしくお願いいたします。 //編集内容// VRAMにアクセスする上で壁が多くあることはよくわかりました。(多分) そこで、過去にした質問を少し変えて改めて質問したいのですが、CPUからGPUを経由してVRAMにデータを書き込むPCであるという仮定で「CPUからGPUを経由してVRAMにデータを書き込みをするCプログラムをコンパイルに成功して実際に文字が表示できたとします。そのC言語プログラムをアセンブリプログラムに変換したとします。そのアセンブリプログラムはハードウェアに依存したものであるため、GCCでアセンブリプログラムとして実行してもCプログラム同じような結果が出ると思います。 得られたアセンブリプログラムをVRAMにデータを書き込むひな形のプログラムとして、そのひな形のアセンブリプログラムを参照に改造して別の文字を表すようにアセンブリプログラムで書いてGCCなどでアセンブリ言語としてコンパイルできれば、アセンブリプログラムでVRAMにアクセスでき文字を表せると思うのですが、(OSも関与してくると思いますが。)私の考えは間違っているでしょうか? 完全に一からアセンブリプログラムを組んでVRAMにアクセスするのは難しいですが、以上のようにできるならばVRAMにアクセスするのは難しくないと思います。 完全に一から使っているCPU、GPUの情報からアセンブリプログラムを組んでVRAMにアクセスするのは難しいですが、コンパイラによって出力されたアセンブリプログラムをそのまま使えばVRAMにアクセスするのは難しくないと思います。
回答: VARMで検索すればいくらでも情報が得られると思いますが、printf(アプリケーションによる文字出力)とVRAMとは直接結びついているわけでは有りません。大雑把に言うと、アプリ→システムコール(ドライバ?)→GPUに依頼→VRAMに文字の形のビットマップを作成して描画。ちょっと違うかもしれませんが、GPUによってVRAMの位置も違うしDMAの操作も違う。それをうまくやるのがドライバの役目ですd^^・・・昔Z80の頃はVRAMに直接描けたんですが;;・・・そもそも特権命令を使うアプリを実行できるのだろうか??