大端小端

发布于 2022-09-18 17:34:29 字数 89 浏览 20 评论 0

经常看到有人贴C程序,测内存大小端的。
直接查看elf头部可以知道该程序的格式是大还是小。
那么,内存的大小端,跟elf可执行程序格式大小端之间有关系吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

送你一个梦 2022-09-25 17:34:29

大小端是机器决定的,有些机器同时支持大端和小端,可以选择.
elf文件的大小端对于elf本身来说是固定的,如果要在该机器上正确运行,首先得要和该机器的字节序一致(这应该是基本要求)

秋叶绚丽 2022-09-25 17:34:29

楼主把因果关系搞颠倒了。
endian取决于CPU,elf头部是去适配它。
有的CPU是little,有的CPU是big。
有的CPU可以用引脚电平来决定endian,或以某指令来切换。

绝情姑娘 2022-09-25 17:34:29

了解了。最近在弄MIPS。
链接上说,不管是大小端,elfread都可以读出elf头,即elf结构有部分是大小端无关的。
那么对于bootload这第一个运行的程序来说,刚启动CPU应该没有初始化,那么bt如何运行?抑或cpu默认是处于大小端中的某一态势,这样bt就可以跑了?

公布 2022-09-25 17:34:29

endian指的是数据字节的存放次序。指令是一个字节一个字节读的,bootload和这没关系。

荒人说梦 2022-09-25 17:34:29

bootloader也要分大端和小端。mips的5kc,4kc,都是有开关可以调大小端的。

芸娘子的小脾气 2022-09-25 17:34:29

原帖由 beepbug 于 2009-6-9 20:20 发表
endian指的是数据字节的存放次序。指令是一个字节一个字节读的,bootload和这没关系。

怎么会没关系呢?

既然说到 endian,那么就要考虑 big-endian
在 powerpc 这些 big-endian 机器上指令是 4 bytes 的

即使在 x86 这些 little-endian 机器上指令也不完全是一个字节一个字节的读取的

月朦胧 2022-09-25 17:34:29

原帖由 beepbug 于 2009-6-9 20:20 发表
endian指的是数据字节的存放次序。指令是一个字节一个字节读的,bootload和这没关系。

.......当然有关

飞烟轻若梦 2022-09-25 17:34:29

原帖由 mik 于 2009-6-9 21:46 发表

怎么会没关系呢?

既然说到 endian,那么就要考虑 big-endian
在 powerpc 这些 big-endian 机器上指令是 4 bytes 的

即使在 x86 这些 little-endian 机器上指令也不完全是一个字节一个字节的读取的

1)是不是你把定长指令搅在一起了?指令字上的域的安排是另外一码事。日本搞的那个伪汇编(就是软考的那个,叫什么来着?CASP?),它是从bit0开始安排的。这个我想和endian好像不是一码事。
2)对。你们又要扯到Cache上去了。Cache一来,我就被打败了。Cache是块遮羞布,它把控制器给遮住了。它似乎改变了电脑的基本工作原理。X86里的控制器在读指令时,只能一字节一字节读,因为读了首字节,它才能知道这指令到底有几字节。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文