2015-10-09 134 views
-1

我目前正在使用计算机系统,并且不知道发生了什么。我在作业中有这样一个问题:Little和Big Endian值

在字节可寻址系统中,字节序列从地址0x10010000 0x23, 0x1a, 0x25, 0xaf, 0xef, 0xa5, 0x5a, 0x61, 0x6f, 0x73开始。如果系统使用48位寄存器并支持加载加载命令'ld48bit <rt>, <address>'从内存加载48位信息。在以下情况下,'ld48bit $t0, 0x10010002'后面的t0的内容是什么?

  1. 系统使用大端约定。
  2. 系统使用小尾数约定。

这是否意味着我们将0x10010002的值加载到$t0中,但我们将其更改为48位而不是8位?那么我们在使用big endian时按降序排列t0的值,在使用little endian时按升序排列?我真的不确定如何首先解决这个问题。任何帮助,将不胜感激。谢谢!

回答

1

您有10个字节的数组 - 80位。处理器可以加载6个字节 - 48位。但它被要求阅读(地址+2)。这意味着您列出的前2个字节和最后2个字节将被忽略。

在大端存储器的情况下,遇到的第一个字节是最重要的,所以数据寄存器将“出现”以按照您呈现的相同顺序保存字节。

0x25afefa55a61 

在小端存储器存储的情况下,所遇到的第一个字节是至少显著,因此读入到寄存器中的字节顺序将颠倒过来。

0x615aa5efaf25 

人类通常使用大端描述格式,例如在1000最显著的数字是第一。

+0

谢谢!但我不明白为什么我们不得不忽略前两位数字。 – Riadiani

+0

@Riadiani,因为问题是*“字节序列从地址0x10010000开始*”,但是继续给出指令“ld48bit $ t0,0x10010002”,它比数组基址大2个字节。 –

相关问题