当前位置: 首页 > 面试题库 >

哪种Java代码将迫使javac 1.6使用“交换”和“ nop”操作码?

伯彦君
2023-03-14
问题内容

我正在研究业余JVM实现,并且试图确保对规范中的所有操作码都进行了测试覆盖。我已经得到它倒在过去的几年,但nopswap已经躲避我。例如,这是一个可能使用的简单函数swap

static int do_swap() {
  int a = 56;
  int b = 32;
  return b%a;
}

但是,由此产生的字节码javac 1.6避免了交换来代替本地存储:

static int do_swap();
  Code:
   0:   bipush  56
   2:   istore_0
   3:   bipush  32
   5:   istore_1
   6:   iload_1
   7:   iload_0
   8:   irem
   9:   ireturn

有任何想法吗?


问题答案:

没有。Java语言规范不提供此类保证。您可以使用Jasmin(字节码汇编器)编写自己的Java字节码。



 类似资料:
  • 本文向大家介绍如何使用python代码操作git代码,包括了如何使用python代码操作git代码的使用技巧和注意事项,需要的朋友参考一下 git简介 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subvers

  • 问题内容: 现在考虑下面给出的代码: 当我尝试调试上面代码中的行时,调试器将我带到String类的方法中,然后将我带到StringCoding类的方法中。在调试过程中,encode方法的第一行()返回“ UTF-8”作为默认编码。我希望它是“ UTF-16”。 该程序的输出为: 最= 6700的Unicode值UTF-8字符=最| 默认值:字节数= 3 对应的UTF-16字符= UTF-16:字节

  • 本文向大家介绍Java中使用Jedis操作Redis的示例代码,包括了Java中使用Jedis操作Redis的示例代码的使用技巧和注意事项,需要的朋友参考一下 使用Java操作Redis需要jedis-2.1.0.jar,下载地址:jedis-2.1.0.jar 如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar,下载地址:commons-pool-1.5.4.ja

  • 我有一个方法,它迭代一个映射,对值执行一个操作,并填充一个要返回的映射。 我的问题是,我如何将其转换为Java8(执行不循环的操作)? 代码:

  • 同步工具的使用在本章称为构建块,你可以之关注那些需要同步的操作,而非具体使用的机制。当需要为程序的并发时,这是一种可以帮助你简化你的代码的方式,提供更多的函数化的方法。比起在多个线程间直接共享数据,每个任务拥有自己的数据会应该会更好,并且结果可以对其他线程进行广播,这就需要使用“期望”来完成了。 4.4.1 使用“期望”的函数化编程 术语函数化编程(functional programming)引

  • 本文向大家介绍JAVA使用JDBC技术操作SqlServer数据库实例代码,包括了JAVA使用JDBC技术操作SqlServer数据库实例代码的使用技巧和注意事项,需要的朋友参考一下 JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提