2016-05-13 5 views
-1

私はアセンブリ(MIPS用)を学んでいますが、私はすべてのメモリコールで32ビットワードが得られることを知っています。私はまた、Cでは32ビットを必要としないデータ型があることも知っています。例えば、charは8ビットのメモリとint 16ビットしか必要としません。だから私の質問は、メモリ内の32ビットを使用するCのcharですか?またはわずか8ビットですか?そして、CPUがメモリからロードする場合、それが8ビットであれば、それは32ビットワードを受け取ることはできませんか?私は、すべてが32ビットの単語としてメモリに保存されていると常に言われて以来、これについて少し混乱しています。Cはどのようにメモリに異なるデータ型を格納しますか?

一方の側では、8ビットブロックにcharを格納するのが理にかなっているため、領域を節約できます。

+0

"私はアセンブリを学んでいます(MIPSのために)、私はすべてのメモリコールで32ビットワードが得られることを知っています。" - いいえ、そうではありません。 MIPSは8ビットでlbとsb、16ビットでlhとshを持ちます。 – immibis

答えて

2

あなたは間違っています。 MIPSはバイトアドレス可能なCPUなので、メモリの各 'セル'は8ビットしか保持しません。各読取り(または書込み)命令は、8ビット、16ビット、または32ビットにアクセスするために、一度に1,2または4バイトにアクセスできます(MIPS32では、MIPS64を使用して、書きます)。

関連する問題