リトルエンディアンの「種類」であるISAがあります。基本的なメモリ単位はバイトではなく整数です。たとえば
00000000: BEFC03FF 00008000
「低い」整数がBEFC03FF
で、「高い」整数が であることを表します00008000
。いくつかのビットで表される値を読み取る必要があります。たとえば、ビット 31 から 47 までです。VS10 (c++) で行っていることは、関連するマスクを使用した後に uint64_t var = 0x00008000BEFC03FF を生成し、var & mask
. そのようにすることは合法ですか? uint64_t ビットの配置についていくつかの仮定を行います - それは合法ですか? 非常にコンパイラーとすべての OS (ハードウェアに依存しない) で、uint64_t のビットの配置がこのようになると思いますか?