看了xboot大佬的D1裸机程序,有几处看的很迷糊,由于学艺不精,所以来论坛提问,望解惑。
主要问题是在start.s文件中,有几处汇编代码不是很清楚,
1.
此处代码是为了判断当前运行地址是否是链接地址,根据代码:t0中存的是_start的地址,t1中存的是_image_start地址中的内容(8字节),请问是t0中存的链接地址,t1中存的是当前运行地址吗?为啥当前运行地址是存储在_image_start的地址中?
2.
此处拷贝ddr的bin文件,用到了函数memcpy,该函数的第三个参数是len,为什么a2是通过计算_ddr_bin_start和_ddr_bin_end地址中的内容的差来得到长度的呢?不应该是_ddr_bin_end的地址-_ddr_bin_start的地址吗?
离线
这里的la t1, _image_start不是已经取得_image_start的地址到t1寄存器中了吗?为什么后面还要加LREG t1, (t1)这一句呢?
离线