字节序

  将多字节数据存储在内存中时,各字节的存储顺序称为字节序。比如,将4 字节数据0x12345678 放入内存时,地址0 中放0x12、地址1 中放0x34、地址2 中放0x56、地址3 中放0x78 的方式,称为大端序。相对地,地址0 中放0x78、地址1 中放0x56、地址2 中放0x34、地址3 中放0x12 的方式,称为小端序。这两种数据存储方式请参见图1-10。

  对人类来说,大端序理解起来比较容易,然而对计算机来说,小端比较容易操作,因为不同长度数据的低位位置是相同的。

  不同的CPU 采用的字节序也不尽相同,由此产生的软件通用性和可移植性的问题也屡屡发生。Intel 公司的x86 架构采用的是小端序,而Sun(现属Oracle)公司的SPARC 处理器和MIPS 科技公司的MIPS 处理器等采用的是大端序。


  很多处理器考虑到软件的通用性和可移植性,同时支持两种字节序并可依据程序切换,这种方式称为双端序。

 

  访问I/O 的方式大致分为存储器映射I/O 和端口映射I/O 两种。

  存储器映射I/O 方式中,I/O 也和内存一样使用地址进行管理,可以和访问内存一样的方式进行访问。存储器映射I/O 的概要如图1-12 所示。存储器映射I/O 方式中,由于使用访问内存的指令进行I/O 访问,硬件上较为简化。但缺点是,I/O 也会占用地址空间。

  端口映射I/O 方式中,CPU 含有支持访问I/O 的专用指令。端口映射I/O 的概要如图1-13 所示。端口映射I/O 方式的优点,一是地址空间可以全部分配到内存,二是内存和I/O 的访问可以在指令级别区分。但是,由于需要专用指令,缺点是硬件设计变得复杂。

 

posted @ 2017-01-24 15:38  牧师/preacher  阅读(419)  评论(0编辑  收藏  举报