|
如下C6713指令,15行为什么加上一个nop 5指令???
[复制链接]
改代码摘自TI 的C6713 二级bootloader代码。在15行为什么加上一个nop 5 指令,为啥不是nop 3
或nop 2 或干脆不加呢???
1 ;****************************************************************************
2 ; copy sections
3 ;****************************************************************************
4 mvkl copyTable, a3 ; load table pointer装载表的首地址
5 mvkh copyTable, a3
6
7
8 copy_section_top:
9 ldw *a3++, b0 ; byte count 装载字节数到b0寄存器
10 ldw *a3++, b4 ; load flash start (load) address 装载源地址到b4寄存器
11 ldw *a3++, a4 ; ram start address 装载目的地址到a4寄存器
12 nop 2
13
14 [!b0] b copy_done ; have we copied all sections? 如果b0寄存器值0为则跳到完成处
15 nop 5
16
17 copy_loop:
18 ldb *b4++,b5 ;从源地址装载一字节数据到b5寄存器
19 sub b0,1,b0 ; decrement counter 字节数减一
20 [ b0] b copy_loop ; setup branch if not done 如果b不为0跳到copy_loop????????
21 [!b0] b copy_section_top ;如果b为0跳到copy_section_top???????
22 zero a1
23 [!b0] and 3,a3,a1
24 stb b5,*a4++ ;开始复制???
25 [!b0] and -4,a3,a5 ; round address up to next multiple of 4
26 [ a1] add 4,a5,a3 ; round address up to next multiple of 4
27
28 ;****************************************************************************
29 ; jump to entry point
30 ;****************************************************************************
31 copy_done:
32 mvkl .S2 _c_int00, B0
33 mvkh .S2 _c_int00, B0
34 b .S2 B0
35 nop 5
36
37 copyTable:
38
39 ; count
40 ; flash start (load) address
41 ; ram start (run) address
42
41 ;; .text
44 .word _text_size
45 .word _text_ld_start
46 .word _text_rn_start
47
48
49 ;; end of table
50 .word 0
51 .word 0
52 .word 0
; 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
|
|