TI中文支持网
TI专业的中文技术问题搜集分享网站

关于手册spra999a中提供的二级bootload代码的若干疑问

本人最近在设计DSP6713的二级BOOT的时候,参考了DSP官方提供的手册spra999a,在手册里面有这么一段汇编代码,如下图(手册P13),代码的其他部分我大概还是可以看明白的,但是对于图中红色框中的几行代码,我始终不知道是什么意思,按照我的理解代码中的红框上面的两句代码如下:
 [ b0]  b     copy_loop         
 [!b0]  b     copy_section_top 这两句代码应该是根据b0寄存器里面值来决定跳转的位置,按我的理解就是不管b0的值是0与否,程序都会执行跳转,要不跳转到copy_loop标号处(b0非零时),要不就跳转到copy_section_top 标号处(b0为0时)。

也就是说图中红色框中的代码始终不可能运行到,因此也就不能执行stb   b5,*a4++这句代码了,那就不能实现代码的搬移了啊!!!这里我不知道自己的理解那里有问题,恳请大家指点。
 关键两个问题:1.红色框中的代码的作用是什么?2.什么实时才能执行到红色框中代码?
 
 附手册链接:http://www.ti.com.cn/cn/lit/an/spra999a/spra999a.pdf

Denny%20Yang99373:

流水线排起来后面的指令也会执行

PU HU:

回复 Denny%20Yang99373:

请问采用流水线的话,这几句和那几句是并行执行的啊

Denny%20Yang99373:

回复 PU HU:

可以看看反汇编

带||的几条都是并行的

PU HU:

回复 Denny%20Yang99373:

反汇编中是可以通过||看出语句是否并行,但是我想知道如果在程序员编写的时候怎样决定哪些语句是并行的呢,正如上面的语句一样,程序员并没有在语句中加入||符号,而是通过编译器自己加进去的,那么我想知道程序员在编写这句代码的时候怎么就知道我写的这几句通过编译器后就一定能够并行执行呢?毕竟从上面的语法来看并不是并行的啊,因为源程序中并没有||符号

Tony Tang:

回复 PU HU:

Instruction Type BranchDelay Slots 5

B跳转指令是5个周期的delay,也就是说后面5条指令都会执行,然后才真正执行跳转到的指令。

赞(0)
未经允许不得转载:TI中文支持网 » 关于手册spra999a中提供的二级bootload代码的若干疑问
分享到: 更多 (0)