问题标签 [jump-table]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2447 浏览

java - Java中的函数数组?

也许我在 C 中想了很多,但我没有看到如何在 java 中正确解决这个问题的解决方案。我收到来自服务器的响应,该响应发送如下字符串:

客户端接收该字符串并提取命令。现在我想调用一个知道如何处理命令的函数。在 C 方面,解决方案是显而易见的。我用命令名称和相关的函数指针实现了一个数组,所以我可以简单地遍历数组并调用函数。

有没有办法在 Java 上做到这一点?我不知道我可以根据名称调用函数。所以目前我看到以下选项:

  1. 做一系列if(command.euqals(COMMAND)
  2. 对于每个命令,我可以创建一个单独的对象,我可以将其存储在一个数组中(非常混乱)。
  3. 使用反射,所以我可以有一个函数名称与命令名称的映射。

还有其他选择吗?

if 语句不是最好的 IMO,但至少它允许编译器错误和类型检查。使用反射至少更优雅,因为我可以更轻松地循环和扩展它,但当然,这意味着如果我输错名称,我只能看到运行时错误。

0 投票
4 回答
1820 浏览

java - 在 Java 中实现跳转表

如何将这个简单的计算器程序中的 switch/case 语句转换为跳转表。

老实说,我不知道跳转表到底是什么(在网上找不到任何解释),所以我不知道它与 switch/case 语句有何不同。

旁注:这段代码只处理整数,所以如果你除以 5/3,它会给你 1。我怎样才能轻松地将它更改为浮点数/双精度数。

0 投票
1 回答
1139 浏览

assembly - 如何处理嵌入在 nasm 中的 .text 部分中的跳转表?

基本上,我使用 IDA Pro 从 SPEC2006 反汇编一些二进制文件,并进行一些修改工作以使其在 Windows 7 32 位上进行 nasm-reassmeble。

我在从 IDA Pro 生成的反汇编 asm 代码中发现了一个问题,如下所示:

显然IDA Pro把这个跳转表放在了代码里面。

我使用 nasm 来组装这段代码并生成:

在四行中的每一行

我这样修改它:

但它仍然在四行中的每一行产生相同的错误......

任何人都可以给我一些帮助吗?谢谢你!

0 投票
2 回答
908 浏览

assembly - ARM 汇编中的 MOVHS 命令有什么作用?

我很难理解这个命令的作用。我猜这意味着 mov 半字已登录到寄存器中,但我不确定。任何帮助,将不胜感激!

0 投票
1 回答
7065 浏览

c - 跳台 - 组件 8086

我试图制作这样的开关盒:

在带有分支表/跳转表的汇编 8086 中:

PRINTN 类似于 C 中的 printf。

我的代码不起作用,我不知道为什么......

我做错了什么?

0 投票
1 回答
2373 浏览

assembly - 跳转表的格式

我正在阅读有关跳转表的课程的示例。他们打电话gdb x/8g 0x123456

结果输出如下所示:

我认为跳转表将地址映射到它应该执行的代码的地址。那么为什么有 3 列(不应该是 2 列吗?)。

0 投票
1 回答
2113 浏览

c - 不带跳转表的switch语句

是否可以使用没有跳转表的 switch 语句?GCC 创建了我想避免的愚蠢(在我的情况下是不可用的)跳转表。

0 投票
1 回答
200 浏览

c - C编程中的跳转/分支表

请帮助我使用以下代码

问题是代码无法编译并出现链接错误 unresolved symbol void __cdecl Jmp_Handler_HELLO(void) 但是当主函数中的第一行代码被删除时,代码编译成功。请帮助

0 投票
1 回答
728 浏览

c - 在汇编代码中找不到跳转表

我正在学习汇编。我编写了以下包含 switch case 的 c 程序,创建了目标文件(gcc -o 文件名 filename.c),然后进行了对象转储。但是我没有在对象转储中找到标签和跳转表。

谁能告诉我为什么没有生成跳转表?就像这里提到的 链接

代码

C 文件

下面是主要部分

下面是 .rodata 部分

谁能让我知道为什么会这样?提前致谢

0 投票
1 回答
971 浏览

loops - MASM 组装,创建循环

我要完成的工作:一次读入一个数字,处理该数字并检查它是否为 0,如果是,则退出程序,如果数字 > 10 或 < -10,则打印一条消息“拒绝。 " 我在创建跳转语句时遇​​到了很多麻烦,如何让循环继续处理数字直到 0 ?即使我输入“有效”号码,它仍然会打印“拒绝”消息,然后退出程序。也许在比较之后我不能有多个跳转语句?