标签: bytecode

我可以在Java中使用反射重新定义方法/构造函数吗?

我有一个被调用的类A,我需要创建该类的新对象而不调用它的构造函数.我想通过反射设置它的所有属性.

我可以A使用反射重新定义类的构造函数吗?

或者有其他办法可以做到这一点吗?

java reflection bytecode

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

是什么让字节码解释器比行走的解释器更快?

我确实理解这两种设计背后的技术概念,但是什么使字节码解释器通常更快?有一本好书,有人可以指点我吗?

interpreter bytecode

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

Java中有多少字节的字节码有特定的方法?

我最近在Jon Masamitsu的Weblog上看到,大量的方法(8000字节的字节码)不是用HotSpot进行JIT编译的.

所以我的问题是:我如何找出(作为程序员)特定方法有多少字节字节码?

JIT编译器当然似乎知道.我可以从.class文件中提取这条信息吗?

java jvm bytecode

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

Jellybean上缺少扩展宽度的dalvik字节码

当ICS问世时,引入了几个新的扩展宽度字节码.其中大部分是用于支持巨型ID的说明.以下是一些新的说明,取自我的ics/dalvik/opcode-gen/bytecode.txt:

#
# Extended-width opcodes
#

op 00ff const-class/jumbo           41c  y type-ref      continue|throw
op 01ff check-cast/jumbo            41c  n type-ref      continue|throw
op 02ff instance-of/jumbo           52c  y type-ref      continue|throw
op 03ff new-instance/jumbo          41c  y type-ref      continue|throw
op 04ff new-array/jumbo             52c  y type-ref      continue|throw
op 05ff filled-new-array/jumbo      5rc  n type-ref      continue|throw
op 06ff iget/jumbo                  52c  y field-ref     continue|throw
...
Run Code Online (Sandbox Code Playgroud)

但是,在JB代码中,我找不到对这些新字节码的任何引用.在我的jellybean版本的bytecodes.txt中,最后一个操作码以0xfe结尾:

op   fc +iput-object-volatile       22c  n field-ref     optimized|continue|throw
op   fd +sget-object-volatile       21c  y field-ref     optimized|continue|throw
op   fe +sput-object-volatile       21c  n field-ref     optimized|continue|throw

# unused: …
Run Code Online (Sandbox Code Playgroud)

android bytecode dalvik android-ndk android-source

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

Java字节代码是什么样的?

在维基百科页面http://en.wikipedia.org/wiki/Java_bytecode#Instructions上,它说Java字节代码如下所示:

0:   iconst_2
1:   istore_1
2:   iload_1
3:   sipush  1000
6:   if_icmpge       44
9:   iconst_2
10:  istore_2
11:  iload_2
12:  iload_1
13:  if_icmpge       31
Run Code Online (Sandbox Code Playgroud)

我认为Java字节代码是以十六进制或二进制的一系列整数执行的?

java binary byte jvm bytecode

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

LLVM IR上的Phi指令

有什么方法可以在.ll文件中获得“ phi”指令?

对于以下代码部分,字节码上没有任何“ phi”指令:

int y, z;
y = f;

if (y < 0)
    z = y + 1;
else
    z = y + 2;
return z;
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用传递“ -mem2reg”,但是,如果可能的话,我希望能够在字节码上看到phi指令。

bytecode llvm

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

为什么Python只导入脚本的字节码?

鉴于执行Python字节码将比运行原始源代码更快,因为Python不必重新编译,为什么Python只导入脚本时保存编译的字节码?为每个执行的脚本保存.pyc文件不是更好吗?

python bytecode

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

中间表示(例如字节码或.net IL)仍然是一个优势吗?

是中间表示 --IR -如Java 字节码或.net CIL,仍然是一个优势?我们不能只在源代码中部署软件组件吗?

支持IR的一个论点是软件组件的可移植性,这避免了为每个目标体系结构编译源代码的需要(关于该体系结构的虚拟机的存在).IR提供了对每个体系结构特性的抽象.以同样的方式并与元数据一起,它在实现安全保障方面带来了其他优势; 检查安全通道; 等等

今天,一些技术,如Node.js(带有V8引擎),在源代码中引入了可部署组件的想法,在Node.js中称为包(我不确定它是否是Node.js中的一个开创性的想法).源代码包含IR +元数据的相同信息.此外,使用源代码中的组件不会阻止运行时引擎使用现代虚拟机的相同原理,例如即时编译和后期绑定数据类型,这允许自适应优化,因此理论上可以更快地产生执行.

那么,在源代码中的组件中部署IR中的软件组件是否有任何优势?

jit cil bytecode virtual-machine

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

Java字节码,java供应商和invokedynamic参数

我有这个课,我编译它.

package org.test;

import java.util.function.Supplier;

public class Test {
    static String get() { return "!!"; }

    public static void main(String[] args) {
        Supplier<String> sup = Test::get;
        System.out.println(sup.get());
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,尝试查看它的字节码,我得到以下public static void main函数的开头:

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
         0: invokedynamic #3,  0              // InvokeDynamic #0:get:()Ljava/util/function/Supplier;
         5: astore_1
         6: getstatic     #4                  // Field java/lang/System.out:Ljava/io/PrintStream;
Run Code Online (Sandbox Code Playgroud)

在这里我们可以看到invokedynamic调用,如果我理解正确的话,它会创建一个Supplier接口的匿名实例.传递给invokedynamic有两个参数,一个是#3.第二个参数是0.所以,我的第一个问题是:0代表什么?

恒定池#3代表#3 = InvokeDynamic #0:#27 // #0:get:()Ljava/util/function/Supplier;.在常量池中引用#27,但没有引用#0.我的第二个问题是:#0代表什么?

java bytecode invokedynamic java-8

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

CAMLprim,CAMLexport,CAMLextern

在哪里可以找到在C中实现的OCaml原语的完整列表?是不是够grep 'CAMLprim' <ocamlsourcetree>/byterun/*.c,或者我必须寻找CAMLexport和CAMLextern太,还是什么别的?

(注意:external在.ml中查找声明,.mli文件是不够的,因为我还需要caml_*bytecomp/translcore.ml引用的所有原语用于特殊%someide外部)

primitive ocaml bytecode

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