Little 和 Big Endian 值
Little and Big Endian Values
我目前正在学习计算机系统,对发生的事情一无所知。我的作业中有这样的问题:
在一个字节可寻址系统中,字节序列是从地址 0x10010000 0x23, 0x1a, 0x25, 0xaf, 0xef, 0xa5, 0x5a, 0x61, 0x6f, 0x73
开始的。如果系统使用 48 位寄存器并支持加载加载命令 'ld48bit <rt>, <address>
' 从内存中加载 48 位信息。在以下情况下,'ld48bit $t0, 0x10010002
' 之后的寄存器 t0
的内容是什么?
- 系统使用大端约定。
- 系统使用小端约定。
这是否意味着我们将 0x10010002
的值加载到 $t0
,但我们将其更改为 48 位而不是 8 位?那我们把t0
的值用big endian的时候降序排列,用little endian的时候升序排列?老实说,我不确定如何首先解决这个问题。任何帮助,将不胜感激。谢谢!
您有一个 10 字节 - 80 位的数组。处理器可以加载 6 字节 - 48 位。但它被要求从 (address + 2) 读取。这意味着您列出的前 2 个字节和后 2 个字节将被忽略。
在大端内存存储的情况下,遇到的第一个字节是最重要的,因此数据寄存器将'appear'按照您提供的相同顺序保存字节。
0x25afefa55a61
在小端内存存储的情况下,遇到的第一个字节是最低位的,所以读入寄存器的字节顺序会颠倒
0x615aa5efaf25
人类通常使用大端描述格式,例如在1000
中,最高位在前。
我目前正在学习计算机系统,对发生的事情一无所知。我的作业中有这样的问题:
在一个字节可寻址系统中,字节序列是从地址 0x10010000 0x23, 0x1a, 0x25, 0xaf, 0xef, 0xa5, 0x5a, 0x61, 0x6f, 0x73
开始的。如果系统使用 48 位寄存器并支持加载加载命令 'ld48bit <rt>, <address>
' 从内存中加载 48 位信息。在以下情况下,'ld48bit $t0, 0x10010002
' 之后的寄存器 t0
的内容是什么?
- 系统使用大端约定。
- 系统使用小端约定。
这是否意味着我们将 0x10010002
的值加载到 $t0
,但我们将其更改为 48 位而不是 8 位?那我们把t0
的值用big endian的时候降序排列,用little endian的时候升序排列?老实说,我不确定如何首先解决这个问题。任何帮助,将不胜感激。谢谢!
您有一个 10 字节 - 80 位的数组。处理器可以加载 6 字节 - 48 位。但它被要求从 (address + 2) 读取。这意味着您列出的前 2 个字节和后 2 个字节将被忽略。
在大端内存存储的情况下,遇到的第一个字节是最重要的,因此数据寄存器将'appear'按照您提供的相同顺序保存字节。
0x25afefa55a61
在小端内存存储的情况下,遇到的第一个字节是最低位的,所以读入寄存器的字节顺序会颠倒
0x615aa5efaf25
人类通常使用大端描述格式,例如在1000
中,最高位在前。