大端小端
经常看到有人贴C程序,测内存大小端的。
直接查看elf头部可以知道该程序的格式是大还是小。
那么,内存的大小端,跟elf可执行程序格式大小端之间有关系吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
经常看到有人贴C程序,测内存大小端的。
直接查看elf头部可以知道该程序的格式是大还是小。
那么,内存的大小端,跟elf可执行程序格式大小端之间有关系吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(9)
http://topic.csdn.net/u/20090427 ... 6-eab616d700f4.html
大小端是机器决定的,有些机器同时支持大端和小端,可以选择.
elf文件的大小端对于elf本身来说是固定的,如果要在该机器上正确运行,首先得要和该机器的字节序一致(这应该是基本要求)
楼主把因果关系搞颠倒了。
endian取决于CPU,elf头部是去适配它。
有的CPU是little,有的CPU是big。
有的CPU可以用引脚电平来决定endian,或以某指令来切换。
了解了。最近在弄MIPS。
链接上说,不管是大小端,elfread都可以读出elf头,即elf结构有部分是大小端无关的。
那么对于bootload这第一个运行的程序来说,刚启动CPU应该没有初始化,那么bt如何运行?抑或cpu默认是处于大小端中的某一态势,这样bt就可以跑了?
endian指的是数据字节的存放次序。指令是一个字节一个字节读的,bootload和这没关系。
bootloader也要分大端和小端。mips的5kc,4kc,都是有开关可以调大小端的。
怎么会没关系呢?
既然说到 endian,那么就要考虑 big-endian
在 powerpc 这些 big-endian 机器上指令是 4 bytes 的
即使在 x86 这些 little-endian 机器上指令也不完全是一个字节一个字节的读取的
.......当然有关
1)是不是你把定长指令搅在一起了?指令字上的域的安排是另外一码事。日本搞的那个伪汇编(就是软考的那个,叫什么来着?CASP?),它是从bit0开始安排的。这个我想和endian好像不是一码事。
2)对。你们又要扯到Cache上去了。Cache一来,我就被打败了。Cache是块遮羞布,它把控制器给遮住了。它似乎改变了电脑的基本工作原理。X86里的控制器在读指令时,只能一字节一字节读,因为读了首字节,它才能知道这指令到底有几字节。