您的位置:首页 > 编程语言

(莱昂氏unix源代码分析导读-17)系统初启(10)

2012-06-05 11:59 344 查看
小结
本章的内容到此结束。
由于我们跳过了一些专题,启动代码中仍有一些未解之谜,但它的神秘面纱已经揭开,这是一个好的开始。

最后,给出fuibyte(0)的分析结果:
0814 _fuibyte:

0815 _fubyte:
0816 mov 2(sp),r1 /参数(输入地址)--->r1
0817 bic $1,r1 /r1低位清0,即
/如果输入地址为奇数地址,则地址 =地址-1

0818 jsr pc,gword /调用gword
/gword会取r1地址指向的word,通过r0返回
/书中有详细的分析,我就不再赘述了

0819 cmp r1,2(sp) /比较r1和输入参数:
0820 beq 1f /r1和输入参数相同,证明r0的低byte就是我们想要的值,跳到标号1
0821 swab r0 /否则,证明r0的高byte是我们想要的值,于是swab
r0的高低byte

0822 1:
0823 bic $!377,r0 /现在,r0的低byte是我们想要的,故将r0的高byte清0
0824 rts pc /返回

【注】:fubyte/ fuword用来get数据,即将previos空间的数据搬运到current空间(kernel态)中来。
相应的还有subyte/ suword,他们用来set数据,即将current空间(kernel态)的数据搬运到
previos空间中去。

博客地址: http://blog.csdn.net/cszhao1980
博客专栏地址:http://blog.csdn.net/column/details/lions-unix.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: