システム ライブラリを使用せずに、アセンブリまたは C を使用して I/O デバイスとの間で直接読み書きできる方法を知りたいと思っていました。たとえば、文字データを 0xB8000 に書き込むことで、x86 リアル モードでテキスト ベースの VGA にレンダリングできることを私は知っています。しかし、他の CPU アーキテクチャで他のデバイスにアクセスするにはどうすればよいでしょうか? それらはすべて最初からメモリマップされていますか、それとも必要なときにそれらを取得するためのトリックはありますか?
具体的には、C または ARM asm で、テキスト モード、USB ポート、および ps/2 ポートで vga を読み書きする方法を知りたいです。標準の通信プロトコルについて知る必要はありません。それは自分で理解できます。ポートやその他のデバイスを識別して通信する方法を知りたいだけです。
コンパイラとアセンブラには、ホスト アーキテクチャとして x86_64 で実行されるクロスコンパイルされた GNU ツールチェーンを使用しています。ターゲット マシンにライブラリやオペレーティング システムがないため、実際にはフラット バイナリを作成し、SD カードのブート セクタに書き込むだけです。ハードウェアはラズベリーパイのモデルbです。