java - 在JVM指令中,有些指令的前缀不同,但功能却非常相似。我们真的需要它们吗?如果是,为什么?

标签 java jvm java-bytecode-asm

For add : iadd/ladd/fadd/dadd, For sub : isub/lsub/fsub/dsub, For mul : imul/lmul/fmul/dmul For div : idiv/ldiv/fdiv/ddiv For rem : irem/lrem/frem/drem Fro neg : ineg/lneg/fneg/dneg...

  1. 我们能否只使用一条指令,例如 add,来替代所有的 add 指令?
  2. 如果问题 1 的答案为真,这会比当前解决方案获得更好的性能吗?
  3. 如果 Q1 为假,为什么?

最佳答案

就像在真实的机器中一样,不能使用相同的指令来对 double 或 int 取反。这些指令在位级别上的工作方式确实不同,并且仅在足够高的抽象级别上才相同(即对数字求负)。

这就是为什么我们有更高级的语言来抽象出无趣的机器细节。但在汇编语言中,这种区别是至关重要的。

关于java - 在JVM指令中,有些指令的前缀不同,但功能却非常相似。我们真的需要它们吗?如果是,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28136934/

相关文章:

java - 监听器如何在 Java 中工作,它们位于何处,内存管理是什么?

Java ASM 操作 IntInsnNodes

java - 根据用户的动态字段对链接列表进行排序

java - Vaadin 6.8.4 项目无法使用 Eclipse Juno J2EE 预览版 jetty 服务器启动 - 无上下文

java - 如何更改 JButton 的位置

java - 为什么 methodvistor.visitMaxs(0,0) 在 Java asm 中崩溃?

java - 重构java字节码

java - 如果获得焦点如何清空 JTextField

java - 在 Java 中缓冲 inputStream 时出现奇怪的 IOException

java - 暂停 JVM,仅修复 "jstack -F pid"