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

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条回答
sunliezhi
1楼-- · 2020-01-03 17:46
本帖最后由 sunliezhi 于 2016-7-31 21:58 编辑

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


首地址是 0x8000 0000, 那么首地址也是有一个字节的数据的呀, 算到第十个数据在地址 0x8000 0009, 而不是你说的指向“加上10个byte以后,指向
0x8000 000A”
nds_shenzhen
2楼-- · 2020-01-03 20:03
感觉问题再怎么简单问题,也不应该拿楼主开刷,楼主只是考虑问题,站的角度不一样,或者简单问题,复杂化了,
yuntian
3楼-- · 2020-01-03 20:18
你是对的,
Firman
4楼-- · 2020-01-04 01:27
 精彩回答 2  元偷偷看……
wye11083
5楼-- · 2020-01-04 05:34
sunliezhi 发表于 2016-7-31 21:55
就像一个tag结构体,
大小是10个byte,首地址是
0x8000 0000

其实灰常简单,什么叫next?为什么不叫last?为什么不叫tail?
LZ这分刷得太厉害太强大了。难道号被盗给一个新手了?
blxy
6楼-- · 2020-01-04 11:24
楼主拿18K工资?

一周热门 更多>