问题标签 [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.
java - Java中的函数数组?
也许我在 C 中想了很多,但我没有看到如何在 java 中正确解决这个问题的解决方案。我收到来自服务器的响应,该响应发送如下字符串:
客户端接收该字符串并提取命令。现在我想调用一个知道如何处理命令的函数。在 C 方面,解决方案是显而易见的。我用命令名称和相关的函数指针实现了一个数组,所以我可以简单地遍历数组并调用函数。
有没有办法在 Java 上做到这一点?我不知道我可以根据名称调用函数。所以目前我看到以下选项:
- 做一系列
if(command.euqals(COMMAND)
- 对于每个命令,我可以创建一个单独的对象,我可以将其存储在一个数组中(非常混乱)。
- 使用反射,所以我可以有一个函数名称与命令名称的映射。
还有其他选择吗?
if 语句不是最好的 IMO,但至少它允许编译器错误和类型检查。使用反射至少更优雅,因为我可以更轻松地循环和扩展它,但当然,这意味着如果我输错名称,我只能看到运行时错误。
java - 在 Java 中实现跳转表
如何将这个简单的计算器程序中的 switch/case 语句转换为跳转表。
老实说,我不知道跳转表到底是什么(在网上找不到任何解释),所以我不知道它与 switch/case 语句有何不同。
旁注:这段代码只处理整数,所以如果你除以 5/3,它会给你 1。我怎样才能轻松地将它更改为浮点数/双精度数。
assembly - 如何处理嵌入在 nasm 中的 .text 部分中的跳转表?
基本上,我使用 IDA Pro 从 SPEC2006 反汇编一些二进制文件,并进行一些修改工作以使其在 Windows 7 32 位上进行 nasm-reassmeble。
我在从 IDA Pro 生成的反汇编 asm 代码中发现了一个问题,如下所示:
显然IDA Pro把这个跳转表放在了代码里面。
我使用 nasm 来组装这段代码并生成:
在四行中的每一行
我这样修改它:
但它仍然在四行中的每一行产生相同的错误......
任何人都可以给我一些帮助吗?谢谢你!
assembly - ARM 汇编中的 MOVHS 命令有什么作用?
我很难理解这个命令的作用。我猜这意味着 mov 半字已登录到寄存器中,但我不确定。任何帮助,将不胜感激!
c - 跳台 - 组件 8086
我试图制作这样的开关盒:
在带有分支表/跳转表的汇编 8086 中:
PRINTN 类似于 C 中的 printf。
我的代码不起作用,我不知道为什么......
我做错了什么?
assembly - 跳转表的格式
我正在阅读有关跳转表的课程的示例。他们打电话gdb x/8g 0x123456
结果输出如下所示:
我认为跳转表将地址映射到它应该执行的代码的地址。那么为什么有 3 列(不应该是 2 列吗?)。
c - 不带跳转表的switch语句
是否可以使用没有跳转表的 switch 语句?GCC 创建了我想避免的愚蠢(在我的情况下是不可用的)跳转表。
c - C编程中的跳转/分支表
请帮助我使用以下代码
问题是代码无法编译并出现链接错误 unresolved symbol void __cdecl Jmp_Handler_HELLO(void) 但是当主函数中的第一行代码被删除时,代码编译成功。请帮助
c - 在汇编代码中找不到跳转表
我正在学习汇编。我编写了以下包含 switch case 的 c 程序,创建了目标文件(gcc -o 文件名 filename.c),然后进行了对象转储。但是我没有在对象转储中找到标签和跳转表。
谁能告诉我为什么没有生成跳转表?就像这里提到的 链接
代码
C 文件
下面是主要部分
下面是 .rodata 部分
谁能让我知道为什么会这样?提前致谢
loops - MASM 组装,创建循环
我要完成的工作:一次读入一个数字,处理该数字并检查它是否为 0,如果是,则退出程序,如果数字 > 10 或 < -10,则打印一条消息“拒绝。 " 我在创建跳转语句时遇到了很多麻烦,如何让循环继续处理数字直到 0 ?即使我输入“有效”号码,它仍然会打印“拒绝”消息,然后退出程序。也许在比较之后我不能有多个跳转语句?