首页 / 知识
关于C#:什么是跳转表?
2023-04-14 11:03:00

What is a jump table?有人可以解释跳转表的机制吗,为什么嵌入式系统需要跳转表? 跳转表可以是指向函数的指针数组,也可以是机器码跳转指令的数组。如果您具有一组相对静态的函数(例如,系统调用或某个类的虚函数),则可以一次创建该表,然后使用简单的数组索引来调用这些函数。这将意味着检索指针并调用函数或根据所使用表的类型跳转到机器代码。 在嵌入式编程中这样做的好处是: 如果这样做确实会花费您一点时间来访问表,但这并不比任何其他虚函数调用都要糟糕。 跳转表(也称为分支表)是一系列指令,所有指令均无条件分支到代码中的另一点。 您可以将它们视为所有情况都已填充的switch(或select)语句:
请注意,没有返回-跳转到的代码将执行返回,并且它将跳转回到调用myjump的位置。 这对于状态机非常有用,在状态机中您可以根据状态变量执行某些代码。还有许多其他用途,但这是主要用途之一。 它用于您不想浪费时间摆弄堆栈并希望节省代码空间的地方。它尤其适用于速度非常重要的中断处理程序,并且导致中断的外围设备仅由单个变量知道。这类似于带有中断控制器的处理器中的向量表。 一种用途是采用售价为0.60美元的微控制器,并为视频应用生成复合(TV)信号。 micro的功能并不强大-实际上,它的速度还不够快,无法写入每条扫描线。跳转表将用于绘制字符,因为从内存中加载位图花费的时间太长,并使用for()循环将位图推出。取而代之的是,分别跳到字母和扫描行,然后再跳转8条左右的指令,将数据直接直接写入端口。 -亚当 来自维基百科:
维基百科对此进行了很好的总结:
换句话说,当您的系统内存和/或CPU受到极大限制时(例如在嵌入式平台中经常出现这种情况),它是一种有用的构造。 这里描述了一个跳转表,但是简单来说,它是CPU根据特定条件应跳转到的地址数组。例如,C switch语句通常被实现为跳转表,其中每个跳转条目都将转到特定的" case"标签。 在内存使用率非常高的嵌入式系统中,使用跳转表而不是使用更多内存密集型方法(例如大规模的if-else-if)可以更好地服务于许多构造。 跳转表通常(但非排他性地)用于有限状态机中,以使其成为数据驱动的表。 代替嵌套的开关/案例
您可以创建2d数组或函数指针,而只需调用 跳转表(通常称为分支表)通常仅由机器使用。 编译器在汇编程序中创建所有标签的列表,并将所有标签链接到内存位置。跳转表几乎是功能,变量或标签可能存储在内存中的参考卡。 因此,函数执行时,完成时会跳回到其先前的存储位置或跳至下一个函数,依此类推。 如果您在谈论我的想法,那么您不仅在嵌入式系统中需要它们,而且在任何类型的编译/解释环境中都不需要它们。 Brian Gianforcaro |
最新内容
相关内容
调用函数命令linux?
调用函数命令linux?,系统,管理,网络,通用,统一,观察,地址,代码,设备,地方,怎么调用system函数,使用Android的linux命令1、int system(const chlinux各种命令的解释?
linux各种命令的解释?,地址,工作,系统,信息,命令,目录,时间,管理,控制台,常用命令,linux的常用命令有哪些呢???希望带上解释date:打印或者设置linux路径命令解释?
linux路径命令解释?,系统,信息,设备,数据,工具,命令,文件,标准,发行,时间,linux查看路径命令1、linux命令如果记不得,可以使用man命令来查看某linux创建数组命令?
linux创建数组命令?,地址,工作,系统,信息,命令,代码,目录,情况,标准,文件,Linux命令linux系统常用操作命令如下:ls:全拼list,功能是列出目录的内linux查询函数命令?
linux查询函数命令?,系统,信息,名称,标准,函数,百度,代码,名字,最新,实时,Linux下查找一个函数在哪个库文件中1、默认状态下,gcc并不搜索数学库linux进程命令解释?
linux进程命令解释?,系统,状态,基础,进程,信息,时间,命令,实时,软件,名称,Linux中用于进程显示的top命令使用实例集锦1、Top 命令输出: 首先,让linux关机命令解释?
linux关机命令解释?,系统,工作,命令,时间,银河,信息,用户,级别,终端,指令,linux关机命令1、shutdown命令 shutdown命令用于安全关闭Linux系统什么是Python全局解释器锁(GIL)?
什么是Python全局解释器锁(GIL)?,数据,控制权,状态,持有,工具,时间,设计,培训,全局,线程,全局解释器锁是计算机程序设计语言解释器用于同步线Python解释器种类以及特点有哪些?
Python解释器种类以及特点有哪些?,代码,技术,培训,特点,字节,种类,速度,语言,方式,文件,当我们编写完Python代码时,我们会得到一个包含Python代深入理解python函数传参机制
深入理解python函数传参机制,培训,对象,函数,变量,类型,复本,下面,操作,机制,内存,首先需要申明的一点是,python里是没有像C和C++里那样按值传Python中的匿名函数lambda
Python中的匿名函数lambda,代码,地方,名字,主体,名称,培训,函数,表达式,赋值,语句,简述除了def语句之外,Python还提供了一种生成函数对象的表python的垃圾回收机制
python的垃圾回收机制,时间,技术,对象,系统,培训,名字,垃圾,标记,机制,内存,引用计数Python默认的垃圾收集机制是“引用计数”,每个对象维护了