标签: bytecode

通过数组访问数组元素比通过函数获取它们更有效吗?

我正在考虑制作一个由大网格组成的对象,存储在二维数组中,以及在该网格上工作的函数.

如果我想遍历对象之外的这个数组中的元素,访问每个网格元素最可读和尊重隐私的方法是使用像grid.getElement(x,y)这样的函数,它只返回数组[ X] [Y].

当程序被编译成字节码时,这是否比通过grid.array [x] [y]直接访问数组效率低?

java polymorphism bytecode

1
推荐指数
1
解决办法
148
查看次数

不同编译器,版本,依赖项中java .class文件的差异是什么?

嗨,我想知道有多少Java类文件在不同的编译器中发生变化.因此,如果.java文件是由Sun JDK 1.4,1.5 1.6甚至IBM JDK编译的,那么实际字节的变化量是多少.我知道类文件在调试信息和模糊处理方面可能有所不同,但我们假设这些选项是相同的,所以包含调试信息,没有混淆.如果我在JDK 1.4编译的.class文件上运行了MD5或SHA-1,那么如果我在JDK 1.5中编译它,那么Hash会有所不同,但是当定位JDK 1.5时,目标是1.4吗?

与此相关的是,当使用不同的依赖关系时,类文件的二进制文件是否会发生更改,或者以不同的方式询问类文件的二进制文件是否会根据其依赖关系进行更改?

最后但并非最不重要的是有程序化的方法来分析.class文件的元数据,以便识别编译时使用的编译器版本和/或开关?

java compiler-construction md5 bytecode class

1
推荐指数
1
解决办法
1037
查看次数

当没有匹配的.pyc文件时,Python如何运行模块代码?

如果我从Windows 7中的python命令行导入module1.py,我看到相应的module1.pyc文件出现在Python32/pycache /文件夹中.我的理解是这个字节码是由Python解释器执行的,但是我可以删除module1.pyc文件,我的模块函数(module1.func1()等...)仍然可以从命令行调用.调用函数但没有.pyc文件时运行的是什么?编译字节码时它是否也被复制到Python shell的运行时内存中?

python bytecode

1
推荐指数
1
解决办法
821
查看次数

使用ASM 4.0我怎样才能创建一个简单的Getter?

说我有一个这样的课:

public class Example{

     private String secret = "Secret String";

}
Run Code Online (Sandbox Code Playgroud)

我怎样才能添加一个getter来返回这个字符串(没有使用反射),所以我想以某种方式添加它

public String getSecret(){
    return secret;
}
Run Code Online (Sandbox Code Playgroud)

java getter bytecode java-bytecode-asm

1
推荐指数
1
解决办法
2301
查看次数

JVM字节码浮动否定:不允许但可能吗?

在这些日子里,我正在尝试研究JVM字节码.我发现FNEG在维基百科上描述了操作码:use to negate a float.到底有什么好处呢?我试图在普通Java代码中对变量进行否定,Eclipse报告错误,即对于float类型的参数,否定运算符是未定义的.那有什么用呢?我怎么用呢?

java floating-point jvm bytecode

1
推荐指数
1
解决办法
179
查看次数

从Java字节码构造一个解析树/ AST

有没有可用的方法或库可用于从Java字节码构建解析树?我的实际目标是创建AST。我知道有一些库可用于从源代码构建AST,只是想知道仅从字节码构建AST的方法。

java parsing programming-languages bytecode

1
推荐指数
1
解决办法
989
查看次数

Java字节码如何处理多个平台?

例如,假设您有一个只打开窗口的java程序.这显然会导致不同操作系统的不同汇编代码(在Windows上最终必须调用CreateWindowEx).那么Java字节码(或任何其他类似语言)如何表示像这样的特定平台呢?

java bytecode

1
推荐指数
1
解决办法
3261
查看次数

为什么java.lang.VerifyError会阻止编译成功?

根据这个主题: 获取java.lang.VerifyError的原因

java.lang.VerifyError 获取执行jvm的版本是否比用于编译的jvm更新.

我们始终可以使用以下jvm选项解决此问题:-XX:-UseSplitVerifier.

根据这个:

/sf/answers/1152691851/

使用此选项是"非常安全".

因此,我不明白为什么java.lang.VerifyError是阻止成功编译的问题.请澄清.也许对于检测字节码的库来说,它是不安全的?

java compatibility jvm bytecode bytecode-manipulation

1
推荐指数
1
解决办法
1511
查看次数

为什么有JVM指令`monitorenter/monitorexit`但没有`wait/notifyAll`(它们是本机调用)?

当我们编写时,synchronized(some_object){}我们可以看到两个JVM指令monitorenter/monitorexit作为字节代码发出.

当我们编写时,synchronized(some_object){some_object.wait()}我希望看到特殊的JVM指令wait,但是没有 - 而是wait/notify实现为本机C函数.

为什么会出现这种不一致(要么将它们全部作为JNI还是作为java字节代码)?是否存在特定(历史)原因或仅仅是品味问题?

上下文:我对此感兴趣,因为monitorenter/monitorexit/wait/notify在字节码中包含所有内容将允许"不处理JNI的JavaByteCode程序正确性验证程序"来验证不使用JNI的并发Java程序.目前,这种假设工具必须解决等待/通知.

java bytecode language-design

1
推荐指数
1
解决办法
606
查看次数

程序执行的步骤

经过几个小时的研究,我没有找到一个具体的答案来解决我的问题而且我要疯了!

从编辑到执行的步骤:

1.(编译步骤)编写源代码后,编译程序.在此步骤中,它将转换为字节码.生成java.class文件(字节码).

2.(执行步骤)现在我执行程序.

  1. (解释步骤)当我这样做时,JVM将字节码解释为机器码.所以我明白机器代码只是在执行后生成的!

现在的步骤是:代码 - >字节码 - >执行 - >机器码

所有这些步骤都与硬件和软件无关. 我对吗?

这称为JIT(只是及时编译),因此当我执行程序时,字节码被编译成机器码,然后才编译. 那么为什么这一步称为解释?

我提前感谢你的答案!

java bytecode machine-code

1
推荐指数
1
解决办法
256
查看次数