メモリマップドハードウェア
一部のコンピューティングアーキテクチャでは、ポインタを使用してメモリまたはメモリマップドデバイスを直接操作できます。
ポインタへのアドレスの割り当ては、マイクロコントローラをプログラミングする際の非常に貴重なツールです。以下は、int型のポインターを宣言し、それを16進アドレスに初期化する簡単な例です。この例では定数0x7FFFです。
int * hardware_address =(int *)0x7FFF;
80年代半ばには、BIOSを使用してPCのビデオ機能にアクセスするのは遅かった。表示を多用するアプリケーションは、通常、16進定数0xB8000を80個の符号なし16ビットint値の配列へのポインターにキャストすることにより、CGAビデオメモリに直接アクセスするために使用されていました。各値は、下位バイトのASCIIコードと、上位バイトの色で構成されていました。したがって、文字「A」を行5、列2に明るい白、青で配置するには、次のようなコードを記述します。
#define VID ((unsigned short (*)[80])0xB8000)
void foo() {
VID[4][1] = 0x1F00 | 'A';
}
ポインタがない場合、Java / Pythonでそのようなことは可能ですか?
編集:
そのようなアクセスは可能ですか:
char* m_ptr=(char*)0x603920;
printf("\nm_ptr: %c",*m_ptr);
?