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
|