韦大叔的书这里是不是写错了,应当是指向下一个结构体...

2020-01-01 17:49发布

WDS的书上有一段,
讲bootloader的15.1节

其中,tag_next 定义如下,它指向当前标记的末尾:

#define tag_next(t) ((struct tag *)((u32 *)(t) + (t)->hdr.size))


这个宏定义里面,嗯

首地址是t,加上一个tag的大小后
地址应当变成下一个tag,而不是
本tag的末尾

就像一个tag结构体,
大小是10个byte,首地址是
0x8000 0000
那么加上10个byte以后,指向
的是0x8000 000A,
是另外一个tag,而不是本tag的末尾,
因为本tag的末尾是
0x8000 0009

不知道是我对了,还是他错了……
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
19504643
1楼-- · 2020-01-01 23:13
 精彩回答 2  元偷偷看……
习学发开
2楼-- · 2020-01-02 02:02
19504643 发表于 2016-7-31 15:21
不知道是我对了,还是他错了……

为什么又是这样没有营养的回复……
19504643
3楼-- · 2020-01-02 03:35
习学发开 发表于 2016-7-31 15:25
为什么又是这样没有营养的回复……

我觉得这句最有营养
ijlc1314
4楼-- · 2020-01-02 08:58
要看这个 (t)->hdr.size的值是多少吧
习学发开
5楼-- · 2020-01-02 12:39
ijlc1314 发表于 2016-7-31 15:37
要看这个 (t)->hdr.size的值是多少吧

你说的对,但是我认为
这里关系到整个程序的运行
应当不会是真正的tag尺寸然后减一
wangcjishu
6楼-- · 2020-01-02 13:46
 精彩回答 2  元偷偷看……

一周热门 更多>