C6713的boot汇编代指令理解问题:

2019-08-01 17:30发布

C6713的boot汇编代指令理解问题:

1、如下两行代码取自TI的二级bootloader程序。觉得不好理解。大家看看我的中文注释的对吗???

[ b0]  b     copy_loop     ;   如果b不为0跳到copy_loop????????
[!b0]  b     copy_section_top     ;如果b为0跳到copy_section_top???????

2、以下为完整的bootloader拷贝功能代码,代码应该没问题,总觉得这两条指令放的位置不对,还没开始
复制怎么就跳转了???






;****************************************************************************
; copy sections
;****************************************************************************
        mvkl  copyTable, a3 ; load table pointer装载表的首地址
        mvkh  copyTable, a3

        
copy_section_top:
        ldw   *a3++, b0     ; byte count 装载字节数到b0寄存器
        ldw   *a3++, b4     ; load flash start (load) address 装源地址到b4寄存器
        ldw   *a3++, a4     ; ram start address  装目的地址到a4寄存器
        nop   2            

[!b0]  b copy_done         ; have we copied all sections?  如果b0寄存器值0为则跳到完成处
        nop   5

copy_loop:
        ldb   *b4++,b5      ;从源地址装载一字节数据到b5寄存器
        sub   b0,1,b0       ; decrement counter  字节数减一
[ b0]  b     copy_loop     ; setup branch if not done  如果b不为0跳到copy_loop????????
[!b0]  b     copy_section_top     ;如果b为0跳到copy_section_top???????
        zero  a1
[!b0]  and   3,a3,a1
        stb   b5,*a4++    ;开始复制???
[!b0]  and   -4,a3,a5      ; round address up to next multiple of 4
[ a1]  add   4,a5,a3       ; round address up to next multiple of 4

;****************************************************************************
; jump to entry point
;****************************************************************************
copy_done:
                mvkl .S2 _c_int00, B0
        mvkh .S2 _c_int00, B0
        b    .S2 B0
        nop   5

copyTable:
       
                        ; count
                        ; flash start (load) address
                        ; ram start (run) address
         
                    ;; .text
                    .word _text_size
                    .word _text_ld_start
                    .word _text_rn_start
   
                                     
                    ;; end of table
                    .word 0
                    .word 0
                    .word 0
   
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。