TBB功能演示-研究生_数字信号处理:时域离散随机信号处理_11761429
在这里,Rn 指向跳转表的基址,Rm 则给出表中元素的下标。图 4.5 指示了这个操作 图 4.5 TBB功能演示 如果 Rn 是 R15,则由于指令流水线的影响,Rn 的值将是 PC+4。通常很少有人会手工计 算表中偏移量,因为很繁,而且程序修改后要重新计算,尤其是当跨源文件查表时(由连接 器负责分配地址)。所以这种指令在汇编中很少用到,通常是 C 编译器专用的,它可以在每 次编译时重建该表。不过,可以为各入口地址取个标号,而且此指令还有其它的使用方式。 在系统程序的开发中,此指令可以提高程序的运行效率。为了提供一个节能高效的操作系统 或者基础函数库,必须挖空心思地使用各种奇异的技巧,甚至在特殊情况下,还要严重违反 程序设计的基本原则。 另外还要注意的是,不同的汇编器可能会要求不同的语法格式。在 ARM 汇编器 (armasm.exe)中,TBB跳转表的创建方式如下所示: TBB.W [pc, r0] ; 执行此指令时,PC的值正好等于 branchtable branchtable DCB ((dest0 – branchtable)/2) ; 注意:因为数值是 8位的,故使用 DCB指示字 DCB ((dest1 – branchtable)/2) DCB ((dest2 – branchtable)/2) DCB ((dest3 – branchtable)/2) dest0 ... ; r0 = 0时执行 dest1 ... ; r0 = 1时执行 dest2 ... ; r0 = 2时执行 dest3 ... ; r0 = 3时执行 TBH 的操作原理与 TBB相同,只不过跳转表中的每个元素都是 16 位的。故而下标为 Rm 的元素要从 Rn+2*Rm 处去找。如图 4.6所演示: 81
- 粉丝: 19
- 资源: 2万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助