无忧启动论坛

 找回密码
 注册
搜索
WEPE笔记本电脑手机维修小包 IT发烧友的必备工具最纯净的「微PE装机优盘」UEPON大师作品卡瑞飞系统和装机二合一超级U盘
无忧启动论坛唯一网址:bbs.wuyou.net系统gho:最纯净好用系统下载站广告联系 QQ:184822951 微信:wuyouceo
楼主: 求道者

[求助] 问些wee菜单很怪的问题。

    [复制链接]
发表于 2019-10-27 08:40:35 | 显示全部楼层
求道者 发表于 2019-10-27 03:11
其实不是大了
是反而小了

好的,证据充分,你编译的,体积不是更大了,而是更小了。

从你贴出的 chenall 编译的结果来看,我不能确定这是否 chenall 发布的。从你的图片上,我发现了一个严重错误。你的图片第一行(就是 00007840 那行)有 B0 02 1A CE 标志。它是一个 4 字节的整数,含义是 Bootlace。但是,这个整数的位置不对。它应该起始于 4 字节对齐的偏移地址,而不应该起始于 00007843。发现在它前面,有三个垃圾字节 2D 65 20 (也即“-e”和一个空格)。因此,这也是由于编译时使用了错误的 shell 而导致的。去掉上述三个垃圾字节,让 B0 02 1A CE 起始于 7840 就对了。

另外,在 B0 02 1A CE 之后,紧接着,不多不少,应该有 12 个 00 字节,然后才是菜单内容。而你贴出的图片,在 B0 02 1A CE 之后,紧接着就是菜单内容,而且,菜单的开头仍然有三个垃圾字节 2D 65 20。这是又一个错误。估计这一揽子错误,皆是由编译时采用了错误的 shell 造成的。

手动修复以上错误,这个 wee63.mbr 就可以正常使用了。当然了,如果你自己能编译出体积更小的版本,那就没必要采用这个旧版本了。

点评

实际上如果用按C佬的说法用gcc45编译,则wee会变大到7d2e这和我用7bbb差的不是一点半点,毕竟源码是用的同一版本,只能是编译器差异了,那看来gcc45本身也挺差的,我回去试试高版本的gcc会咋样,只是最新版本就要改  详情 回复 发表于 2019-10-27 10:56
回复

使用道具 举报

 楼主| 发表于 2019-10-27 10:56:38 来自手机 | 显示全部楼层
本帖最后由 求道者 于 2019-10-27 11:51 编辑
不点 发表于 2019-10-27 08:40
好的,证据充分,你编译的,体积不是更大了,而是更小了。

从你贴出的 chenall 编译的结果来看,我不 ...


实际上如果用按C佬的说法用gcc45编译,则wee会变大到7d2e这和我用gcc4.8编译出的7bbb差的不是一点半点,毕竟源码是用的同一版本,只能是编译器差异了,那看来gcc45本身也挺差的,我回去试试高版本的gcc会咋样,只是最新版本就要改源代码了。

点评

同意你的分析。  详情 回复 发表于 2019-10-27 11:03
回复

使用道具 举报

发表于 2019-10-27 11:03:02 | 显示全部楼层
求道者 发表于 2019-10-27 10:56
实际上如果用按C佬的说法用gcc45编译,则wee会变大到7d2e这和我用7bbb差的不是一点半点,毕竟源码是用的 ...

同意你的分析。

点评

按这个搞法,是不是用新的gcc编译grub4dos也会有优化?  详情 回复 发表于 2019-10-27 11:53
我的那份wee63你看看有没有bug,搞不好也有。  详情 回复 发表于 2019-10-27 11:09
回复

使用道具 举报

 楼主| 发表于 2019-10-27 11:09:02 来自手机 | 显示全部楼层
不点 发表于 2019-10-27 11:03
同意你的分析。

我的那份wee63你看看有没有bug,搞不好也有。

点评

尾部的菜单格式上,没发现错误。至于说菜单之前的那些程序代码以及数据,那就要给编译器烧香了。只要编译器没错,那就没错。有一些是 ASM 代码,那应该没有问题。也有很多代码,是没能用 ASM 来实现,依旧保持 C 代  详情 回复 发表于 2019-10-27 12:07
回复

使用道具 举报

 楼主| 发表于 2019-10-27 11:53:11 来自手机 | 显示全部楼层
不点 发表于 2019-10-27 11:03
同意你的分析。

按这个搞法,是不是用新的gcc编译grub4dos也会有优化?

点评

有人用新版 gcc 来编译 grub4dos,好像是 wintoflash 兄,但他没有弄成。估计会有不少麻烦。 不要抱太大的希望。成功了值得庆贺,失败了也属正常。我对 gcc 团队不信任。 然而,wee 的代码要小得多,估计,碰  详情 回复 发表于 2019-10-27 12:13
回复

使用道具 举报

发表于 2019-10-27 12:07:52 | 显示全部楼层
求道者 发表于 2019-10-27 11:09
我的那份wee63你看看有没有bug,搞不好也有。

尾部的菜单格式上,没发现错误。至于说菜单之前的那些程序代码以及数据,那就要给编译器烧香了。只要编译器没错,那就没错。有一些是 ASM 代码,那应该没有问题。也有很多代码,是没能用 ASM 来实现,依旧保持 C 代码,那就会受到 gcc 的影响了。说实在话,gcc 不可靠,我对它的开发者,也存在某些不信任。在没有合适的替代品之前,只好继续使用 gcc。本来指望华为能够出个可靠的操作系统以及可靠的编译器,可惜,从现有信息来看,这事很没谱,八成是虚构的,靠不住。得知华为的编译器是以 gcc 为基础,也就失望了。如果能以别的编译器(比如 clang)为基础,(在我看来)尚有希望。本人对启动引导软件开发没兴趣了,因此,本人也就不关心这些工作了。否则的话,我可能会尝试用 clang 来编译 grub4dos 或编译 wee。

在 wee63.mbr 的偏移 046C 处,有个整数(在你的编译之下,它是 F618),它指示了尾部 B0 02 1A CE 这个“bootlace 签名”的位置。你的签名实际上起始于 7818 处。两者的差值,应该是一个恒定的常数。也就是说,F618 - 7818 = 常数(屏蔽掉高位,只留下低 16 位的数值),这个常数是 7E00。你试试看,不同的编译,它们的差值是不是都是恒定的 7E00?

尾部的 B0 02 1A CE,正如前面所说,它应该位于 4 字节对齐的边界处。它后面紧跟 12 个 00 字节。然后紧接着就是菜单内容了。从 B0 02 1A CE 开始,不是由 gcc 生成的,而是由 shell 写入的。如果 shell 不是 bash,就有可能写入多余的垃圾字节,造成错误。

点评

首先我看了一下C佬16年编译的那个 偏移046C处是40 F6 但B0 02 1A CE是从7843开始的 F640-7843=7DFD 不对…… 哪里有问题…… 但F640-7E00=7840 偏移7840处是2D 65 20的垃圾字节…… 我用gcc45编译出的东西  详情 回复 发表于 2019-10-28 20:44
华为好像只是在gcc上加了自己的组件对安卓优化,根本没重新做编译器,不过gcc有各种各样的问题的也不奇怪,毕竟gcc45一般也被认为是不应该再使用。 重做编译器的工程量恐怕是相当恐怖。  详情 回复 发表于 2019-10-27 13:04
回复

使用道具 举报

发表于 2019-10-27 12:13:30 | 显示全部楼层
求道者 发表于 2019-10-27 11:53
按这个搞法,是不是用新的gcc编译grub4dos也会有优化?

有人用新版 gcc 来编译 grub4dos,好像是 wintoflash 兄,但他没有弄成。估计会有不少麻烦。

不要抱太大的希望。成功了值得庆贺,失败了也属正常。我对 gcc 团队不信任。

然而,wee 的代码要小得多,估计,碰到的麻烦也会没那么多。试试无妨。
回复

使用道具 举报

 楼主| 发表于 2019-10-27 13:04:51 来自手机 | 显示全部楼层
不点 发表于 2019-10-27 12:07
尾部的菜单格式上,没发现错误。至于说菜单之前的那些程序代码以及数据,那就要给编译器烧香了。只要编译 ...

华为好像只是在gcc上加了自己的组件对安卓优化,根本没重新做编译器,不过gcc有各种各样的问题的也不奇怪,毕竟gcc45一般也被认为是不应该再使用。
重做编译器的工程量恐怕是相当恐怖。

点评

编译器好像有别的可以选择。clang 是其中之一,可以完成 gcc 的大部分功能,成为 gcc 的一个替代品。其它还有没有更好的替代品,我不知道。  详情 回复 发表于 2019-10-27 14:13
回复

使用道具 举报

发表于 2019-10-27 14:13:27 | 显示全部楼层
本帖最后由 不点 于 2019-10-27 14:35 编辑
求道者 发表于 2019-10-27 13:04
华为好像只是在gcc上加了自己的组件对安卓优化,根本没重新做编译器,不过gcc有各种各样的问题的也不奇怪 ...

编译器好像有别的可以选择。clang 是其中之一,可以完成 gcc 的大部分功能,成为 gcc 的一个替代品。其它还有没有更好的替代品,我不知道。


为了防止走过路过的朋友误读了我的意思,特别声明一下:

所有的言论,都只是自己一管之见,正确与否,是由看官您自己来判断的,不是由我说了算的。我并未对任何人(包括华为在内)进行指手划脚的意思。我也不会那么自不量力,我又不算老几,可能还会被人家当做“愤青”或者“高傲自大之人”等等,人家也不可能听我指挥。人家的任何做法,都有其道理,都是正确的,人家自己会负责的。只是我站的角度不同,因而理解不同罢了。我有发表自己看法的自由,任何人都有这样的自由。

点评

就算是抨击华为也没事吧,毕竟方舟编译器本身就有问题,而且华为的宣传口径也有问题,没道理不让人说,clang好像被Google指定为NDK的编译器了,不过实际上换了编译器能好多少又是另外一码事了。  详情 回复 发表于 2019-10-27 14:28
回复

使用道具 举报

 楼主| 发表于 2019-10-27 14:28:26 来自手机 | 显示全部楼层
不点 发表于 2019-10-27 14:13
编译器好像有别的可以选择。clang 是其中之一,可以完成 gcc 的大部分功能,成为 gcc 的一个替代品。其它 ...

就算是抨击华为也没事吧,毕竟方舟编译器本身就有问题,而且华为的宣传口径也有问题,没道理不让人说,clang好像被Google指定为NDK的编译器了,不过实际上换了编译器能好多少又是另外一码事了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2019-12-7 08:32

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表