私はハードウェアレジスタとインターフェイスするCプログラムを読んでいました。その人は、次のような配列のインデックスとして16進数を使用しています。
app_base_add[0x30]
a [i]は*(a + i)を意味します。これは*(a +(i * sizeof(typeof(a))))であるため、16進インデックスはおそらくアドレス空間内の目的のメモリ位置のオフセットですwrt app_base_add 。
これは正しいですか?
そしてまた与えられて、言う:
#define mm2s_start_add 0xc0000000;
これらの割り当ては、使用法が互いにどのように異なりますか?
volatile unsigned int *app_base_add;
app_base_add[0x30>>2]=0x1;
app_base_add[0x30>>2]=1<<2;
app_base_add[0x30>>2]=((unsigned int)mm2s_start_add); //is this assignment valid??
app_base_add[0x30>>2]=((unsigned int *)mm2s_start_add);