大端小端
经常看到有人贴C程序,测内存大小端的。直接查看elf头部可以知道该程序的格式是大还是小。
那么,内存的大小端,跟elf可执行程序格式大小端之间有关系吗? http://topic.csdn.net/u/20090427/22/78cd5868-c866-4e9e-92c6-eab616d700f4.html 大小端是机器决定的,有些机器同时支持大端和小端,可以选择.
elf文件的大小端对于elf本身来说是固定的,如果要在该机器上正确运行,首先得要和该机器的字节序一致(这应该是基本要求) 楼主把因果关系搞颠倒了。
endian取决于CPU,elf头部是去适配它。
有的CPU是little,有的CPU是big。
有的CPU可以用引脚电平来决定endian,或以某指令来切换。 了解了。最近在弄MIPS。
链接上说,不管是大小端,elfread都可以读出elf头,即elf结构有部分是大小端无关的。
那么对于bootload这第一个运行的程序来说,刚启动CPU应该没有初始化,那么bt如何运行?抑或cpu默认是处于大小端中的某一态势,这样bt就可以跑了? endian指的是数据字节的存放次序。指令是一个字节一个字节读的,bootload和这没关系。
回复 #5 solomoon 的帖子
bootloader也要分大端和小端。mips的5kc,4kc,都是有开关可以调大小端的。 原帖由 beepbug 于 2009-6-9 20:20 发表 http://linux.chinaunix.net/bbs/images/common/back.gifendian指的是数据字节的存放次序。指令是一个字节一个字节读的,bootload和这没关系。
怎么会没关系呢?
既然说到 endian,那么就要考虑 big-endian
在 powerpc 这些 big-endian 机器上指令是 4 bytes 的
即使在 x86 这些 little-endian 机器上指令也不完全是一个字节一个字节的读取的 原帖由 beepbug 于 2009-6-9 20:20 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
endian指的是数据字节的存放次序。指令是一个字节一个字节读的,bootload和这没关系。
.......当然有关 原帖由 mik 于 2009-6-9 21:46 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
怎么会没关系呢?
既然说到 endian,那么就要考虑 big-endian
在 powerpc 这些 big-endian 机器上指令是 4 bytes 的
即使在 x86 这些 little-endian 机器上指令也不完全是一个字节一个字节的读取的
1)是不是你把定长指令搅在一起了?指令字上的域的安排是另外一码事。日本搞的那个伪汇编(就是软考的那个,叫什么来着?CASP?),它是从bit0开始安排的。这个我想和endian好像不是一码事。
2)对。你们又要扯到Cache上去了。Cache一来,我就被打败了。Cache是块遮羞布,它把控制器给遮住了。它似乎改变了电脑的基本工作原理。X86里的控制器在读指令时,只能一字节一字节读,因为读了首字节,它才能知道这指令到底有几字节。
页:
[1]
2