主题 : 2440init.s問題 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 1089
精华: 0
发帖: 37
金钱: 335 两
威望: 109 点
综合积分: 74 分
注册时间: 2008-07-18
最后登录: 2012-12-03
楼主  发表于: 2008-10-22 19:49

 2440init.s問題

    ENTRY                                                              ;程序入口
    ASSERT    :DEF:ENDIAN_CHANGE   
    [ ENDIAN_CHANGE   
                    ASSERT  :DEF:ENTRY_BUS_WIDTH   
    [ ENTRY_BUS_WIDTH=32   
    b    ChangeBigEndian           ;DCD 0xea000007
       ]
    [ ENTRY_BUS_WIDTH=16
    andeq    r14,r7,r0,lsl #20      (此句是什麼意思????)
            ]                           
    [ ENTRY_BUS_WIDTH=8
    streq    r0,[r0,-r10,ror #1]
       ]
    |
       b    ResetHandler        ;//here is the first instrument  0x00

問題1:    andeq    r14,r7,r0,lsl #20      是什麼意思????
    2:    ENTRY 與b ResetHandler 隔著這麼多語句,為何b ResetHandler處的地址還是 0x00???
级别: 新手上路
UID: 1089
精华: 0
发帖: 37
金钱: 335 两
威望: 109 点
综合积分: 74 分
注册时间: 2008-07-18
最后登录: 2012-12-03
1楼  发表于: 2008-10-23 08:13
??????????????????
级别: 新手上路
UID: 1089
精华: 0
发帖: 37
金钱: 335 两
威望: 109 点
综合积分: 74 分
注册时间: 2008-07-18
最后登录: 2012-12-03
2楼  发表于: 2008-10-23 10:23
全潛水去了!!
级别: 新手上路
UID: 1089
精华: 0
发帖: 37
金钱: 335 两
威望: 109 点
综合积分: 74 分
注册时间: 2008-07-18
最后登录: 2012-12-03
3楼  发表于: 2008-10-23 13:15
沒有人知道嗎??還是問題太菜了?請幫忙解答!!!!
级别: 新手上路
UID: 1247
精华: 0
发帖: 3
金钱: 30 两
威望: 3 点
综合积分: 6 分
注册时间: 2008-08-07
最后登录: 2009-03-30
4楼  发表于: 2008-10-23 15:29
1。        andeq    r14,r7,r0,lsl #20  ;DCD 0x0007ea00   
      也是b    ChangeBigEndian 指令,只是由于总线不一样而取机器码的顺序不一样    ;
      先取低位->高位    上述指令是通过机器码装换而来的
      通过机器码反推过来的。
    DCD 0xea000007  --->  DCD 0x0007ea00

2。[  |  ] 是 if else 结构,所以的确是第一条语句。
级别: 新手上路
UID: 1247
精华: 0
发帖: 3
金钱: 30 两
威望: 3 点
综合积分: 6 分
注册时间: 2008-08-07
最后登录: 2009-03-30
5楼  发表于: 2008-10-23 15:47
我查了下机器码,应该是对的
andeq    r14,r7,r0,lsl #20  的机器码的确是 DCD 0x0007ea00

由于取机器码的顺序不一样,CPU取出来后就变为DCD 0xea000007

机器执行的就是  b    ChangeBigEndian 指令
级别: 新手上路
UID: 1247
精华: 0
发帖: 3
金钱: 30 两
威望: 3 点
综合积分: 6 分
注册时间: 2008-08-07
最后登录: 2009-03-30
6楼  发表于: 2008-10-23 16:03
2。[  |  ] 是 if else 结构,所以的确是第一条语句。

    [  |  ] 是 if else 结构,是预编译指令,就是决定那部分要编译成机器码,那部分不要。
级别: 新手上路
UID: 1089
精华: 0
发帖: 37
金钱: 335 两
威望: 109 点
综合积分: 74 分
注册时间: 2008-07-18
最后登录: 2012-12-03
7楼  发表于: 2008-10-23 18:29
明了,謝謝,也就是說0x0上放的指令如果不是B ChangeBigEndian 就是b    ResetHandler