32ビットまたは64ビットのシステムが意味することをよく理解しています。基本的にすべてのレジスタまたはワード長は32または64ビットです。32ビットメモリと32ビットプロセッサでCPUが1バイトのメモリにアクセスする方法
わかりやすくするために、32ビットシステムを使って、int型を宣言するとC言語でプログラムを記述してみましょう。 "int a = 5;" 1ワード長のメモリ位置がvar aのために予約される。だから、いつでも私はそれにアクセスしたいと思います。私はそのメモリロケーションのワードアドレスを使ってアクセスできます。
しかし、私は4文字 "char a、b、c、d; 1バイトであるので、すべて1ワードに配置されているので、char bだけにアクセスしたいのですが(メモリがバイトアドレス可能であると言っています)、今はbがワードの3バイト目です...バスにどうやって来るの? 3バイト目はバスの17〜24行目に配線されていませんか?だから、bだけがアクセスされていると、他の24行に何が起こるのですか?
特定のCPU、特にメモリアドレッシングとCPUレジスタに関する部分について、機械語、アセンブリ言語を確認してください。 – theglauber
@deepak、バイトアドレス指定をサポートする32ビットプラットフォームでは、書き込まれた他の3バイト(Byte Enable信号がオフになる)なしで1バイトをメモリに書き込むことができます。 –
@ EricZ、今私が望むバイトがメモリ内の2番目のバイト(ゼロから始まるカウント)であればどうなりますか?通常、メモリからワードにアクセスすると、2番目のバイトはレジスタのビット位置23〜16の間に上がります。しかし、この場合は7〜0の位置になければなりません。メモリのビット0はレジスタのビット0に、ビット31はビット31に接続するように配線されていると思うので、混乱します。すべての回路では、どのようにビット位置16に着陸すると思われるビットは、バイトアクセス中に位置0に上がる可能性がありますか? – deepak