标签: bytecode

字节码解析指令和机器语言之间的区别?

"字节码程序通常通过一次解析一个指令来执行.这种字节码解释器非常便携.一些系统,称为动态转换器,或"即时"(JIT)编译器,将字节码转换为机器语言在运行时必要时:这使得虚拟机不可移植."

关于这一段的问题是:在处理字节码之后,解析的指令和机器语言(或机器代码)之间有什么区别?

compiler-construction interpreter programming-languages bytecode

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

As3 swf字节码注入

我目前正在研究一种工具,它允许我们在大型as3/Air项目(超过2000级)中查看功能是耗时的,以确定需要优化的瓶颈和功能.

实现此目的的一种方法是使用Flash Builder Profiler但它非常慢并且在1或2分钟后崩溃.另一种方法是手动编写具有最重要的功能耗时信息的文件.但这是一个手动过程,我无法涵盖所有​​项目的功能.

所以我正在寻找一种直接在编译的swf中注入as3字节码的方法.使用这样的工具,我将在每次函数调用后注入一个日志,因此我将能够涵盖所有项目的功能.

有些as3 libs存在这样的事情(AS3Commons ByteCode)但是对我的项目不起作用(我得到解析错误)并且as3很慢.

flash bytecode code-injection actionscript-3

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

为什么字节码编程不像汇编编程那样流行或普遍?

你可以在整个互联网上看到汇编代码和汇编编码器,但字节码几乎没有.这是为什么 ?在汇编中编程的需求和优点也应该适用于字节码编程.

assembly bytecode

3
推荐指数
2
解决办法
1531
查看次数

Switch语句在字节码中的表示和效率?

虽然 switch 语句可以表示为一系列 if 语句,但似乎在将 Java switch 语句编译成字节码时,使用了不同的方法。

  • 字节码使用的表示是什么?
  • 我认为这种替代表示是出于效率原因,那么效率与 if 语句表示相比如何?
  • 是否有任何其他考虑导致使用这种表示?

java performance bytecode representation switch-statement

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

在Android中执行Java字节码

我正在尝试在Android中执行Java程序.使用链接如何使用命令在android中执行dex文件?作为参考.我的问题是,我可以从eclipse在模拟器上运行Java程序吗?当我尝试使用adb install HelloWorld.apk(在命令提示符下)时,它表示缺少AndroidManifest.xml.我有选择吗?请帮忙.

java android bytecode

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

为什么最初没有将所有java字节码解释为机器码?

我读到了即时编译(JIT),据我所知,有两种方法 - Interpreter和JIT,它们都在运行时解释字节码.

为什么不准备将所有字节码解释为机器代码,然后才开始运行该过程而不再需要解释器?

java interpreter jvm bytecode

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

序列化与字节码转换

我是编程的初学者,我只是想知道序列化过程和转换为字节代码(中间语言)的过程之间是否存在差异.

我在javacodegeeks.com上发现了这个:

当需要通过网络发送数据或存储在文件中时,通常会使用序列化.数据我指的是对象而不是文本.现在的问题是您的网络基础设施和您的硬盘是理解位和字节但不了解Java对象的硬件组件.序列化是将Java对象的值/状态转换为字节以通过网络发送或保存它.- > 另一方面,反序列化是将字节代码转换为相应的java对象.< -

根据我对这一段的理解,序列化可能是java将其程序转换为字节代码的过程,以便能够传输到不同的计算机环境并仍能正常运行.

我在想这个是正确的吗?

java xml serialization json bytecode

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

为什么在java字节码中重复一些指令?

Java代码如下所示:

File f1 = File.createTempFile("example", ".txt");
File f2 = File.createTempFile("outExample", ".txt");        
FileInputStream in = new FileInputStream(f1);
FileOutputStream out = new FileOutputStream(f2);
try {
    int c;
    while ((c = in.read()) != -1) {
             out.write(c);
    }
} 
finally {
    if (in != null) {
        in.close();
    }
    if (out != null) {
        out.close();
    }
}       
return f1.delete() && f2.delete();
Run Code Online (Sandbox Code Playgroud)

和字节码:

TRYCATCHBLOCK L0 L1 L1 
   L2
    LINENUMBER 138 L2
    LDC "example"
    LDC ".txt"
    INVOKESTATIC File.createTempFile (String, String) : File
    ASTORE 1
   L3
    LINENUMBER 139 …
Run Code Online (Sandbox Code Playgroud)

java bytecode

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

简单的方法拦截与Byte Buddy之前和之后

在撰写本文时的Byte Buddy教程中,所有内容都得到了解释,但是一个简单的after和before方法拦截器不存在,正如我在下面解释的那样,我错过了什么或者教程很复杂.(请参阅LoggerInterceptor示例给出方法但不是对象,ChangingLoggerInterceptor示例给出对象但不调用方法)

我想要实现的是在setter方法执行后调用对象的方法.如何编写拦截器并在Java 6中使用它?

public class DirtyClass{

private String _sField;
private boolean _bDirty;

public void setField(String sField) {
    _sField = sField;
    //setDirty(true); to be appended after proxying
}
public String getField() {
    return _sField;
}
public void setDirty(boolean bDirty){
    _bDirty = bDirty;
}
public boolean isDirty(){
    return _bDirty;
}
}

DirtyClass d = new ByteBuddy().subclass(DirtyClass.class)...???

d.setField("dirty now");
System.out.println(d.isDirty()); //Expecting true
Run Code Online (Sandbox Code Playgroud)

java bytecode byte-buddy

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

执行切片的Python字节码有时会导致“ SystemError:未知操作码”

给定一个由以下3行代码编译而成的代码对象:

code = compile('''a = 1 / 0 # bad stuff. avoid running this!
b = 'good stuff'
c = True''', '', 'exec')
Run Code Online (Sandbox Code Playgroud)

调用dis.dis(code)将分解为:

  1           0 LOAD_CONST               0 (1)
              2 LOAD_CONST               1 (0)
              4 BINARY_TRUE_DIVIDE
              6 STORE_NAME               0 (a)

  2           8 LOAD_CONST               2 ('good stuff')
             10 STORE_NAME               1 (b)

  3          12 LOAD_CONST               3 (True)
             14 STORE_NAME               2 (c)
             16 LOAD_CONST               4 (None)
             18 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)

如何仅提取并运行第二行的字节码b = 'good stuff'?

例如,如果我只想提取并运行c = True从字节索引开始的最后一行字节代码12,我可以对代码对象的co_code …

python bytecode python-3.x

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