问题标签 [bytecode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unmanaged - 托管/字节代码和非托管/本机代码有什么区别?
有时很难描述一些“我们程序员”可能认为对非程序员和管理类型来说很简单的事情。
所以...
您如何向非程序员描述托管代码(或 Java 字节代码)和非托管/本机代码之间的区别?
python - 为什么使用全局解释器锁?
Python的全局解释器锁的作用究竟是什么?编译为字节码的其他语言是否采用类似的机制?
java - 哪个库/程序可用于生成 Java 字节码?
我知道BCEL,但是这个项目似乎已经死了,因为它已经两年没有发布了。Java 世界继续前进。例如 JDK 1.6 有一个新的类文件格式。
那么什么库可以用来为JVM创建字节码。如果没有库,程序也可以,如果我可以详细操作生成的代码,例如字节码汇编器。
有什么软件可以推荐?是不是也很容易使用?有很好的例子/教程吗?
编辑:对于所有的问题:是的,javac 很好。但是为了在运行时生成一些类,直接指向字节码的路径会更干净。
java - Java bytecode specification
Is there a nice place for learning the JVM bytecode instruction set. The specification perhaps and maybe some tutorials?
I ask because I would like to design a toy language and a compiler for it that generates JVM bytecode.
Thanks for your knowledge and perhaps googling.
java - Java的虚拟机和CLR
作为对名为“MSIL 和 Java 字节码之间的差异”的问题的一种跟进?,Java虚拟机的工作方式与Java虚拟机的工作方式有什么(主要)差异或相似之处.NET 框架公共语言运行时 (CLR) 有效吗?
另外,是.NET 框架CLR 是“虚拟机”还是不具备虚拟机的属性?
java - 从 C 源代码到 Java 字节码?
我正在寻找一种将 C 源代码编译成高性能 Java 字节码的方法。我已经成功使用了 NestedVM,但是对于我正在处理的项目来说,性能损失是不可接受的。我还看到了针对这个问题的各种开源项目和一些商业产品。 这个 SO question处理将非 Java 转换为 Java 源的一般问题,但我只想从 C 到 Java 字节码。
将 C 源代码编译为高性能、纯 Java 字节码的最佳方法是什么?
actionscript-3 - 向 AVM2 添加语言
我对制作一种在 AVM2 上运行的语言很感兴趣,我正在寻找关于从哪里开始的建议。我确实意识到这绝不是一项微不足道的任务,但我想尝试一下,至少在此过程中了解更多关于实现语言的知识。
我已经搞砸了 ANTLR,并且一直在阅读语言开发的语法问题。我正在寻找的是关于路径的建议或有用的参考资料/书籍。
例如,我想生成(脚本/手动)一些非常简单的 AVM2 字节码,并让它在 VM 上运行作为开始。
谢谢
java - 从内存中检索字节码以防止黑客攻击
如何检索字节码并进行哈希处理以查看是否有人在内存或文件中操纵了我的字节码?
编辑: 对二进制文件进行签名是否可以保护代码不被修改和执行?尽管我想保护我的用户免于确保他们正在运行我的软件。我还想保护程序(服务器)不被黑客客户端使用。
如果有人篡改了我的客户端,我如何从服务器端检测到?
c++ - 在 MSVC++ 中检查字节码时遇到问题
我在工作中一直在使用免费的 Digital Mars 编译器(我知道很淘气),并创建了一些代码来检查编译的函数并查看字节码以用于学习目的,看看我是否可以从编译器的构建方式中学到任何有价值的东西它的功能。但是,在 MSVC++ 中重新创建相同的方法失败得很惨,我得到的结果非常混乱。我有这样的功能:
然后我做:
在这种情况下,我似乎无法让 C++ static_cast 工作(它会引发编译器错误)......因此是 C 风格的强制转换,但这不是重点......我也尝试过使用参考 &test,但这无济于事。
现在,当我检查 testCode 指向的内存内容时,我感到很困惑,因为我看到的甚至看起来都不像有效代码,甚至还有一个调试断点卡在那里......它看起来像这样(目标是 IA -32):
0xe9, 0xbc, 0x18, 0x00, 0x00, 0xcc...
这显然是错误的,0xe9 是相对跳转指令,从 0xbc 字节外看是这样的:
0xcc,0xcc,0xcc……
即按照未分配或未使用内存的预期,内存初始化为调试断点操作码。
我对返回 42 的函数的期望是:
0x8b、0x2a、0x00、0x00、0x00、0xc3
或者至少一些 mov 的味道,然后是 ret (0xc2、0xc3、0xca 或 0xcb)再往下一点
MSVC++ 是出于安全原因采取措施阻止我做这种事情,还是我做了一些愚蠢的事情而没有意识到?使用 DMC 作为编译器,此方法似乎可以正常工作...
我也很难以另一种方式(执行字节),但我怀疑根本原因是相同的。
任何帮助或提示将不胜感激。
python - 如何在不注释掉 Python 日志调用的情况下剥离它们?
今天我在考虑我一年前写的一个 Python 项目,我在该项目中使用logging
得非常广泛。hotshot
我记得由于开销(表明这是我最大的瓶颈之一),不得不在类似内部循环的场景(90% 的代码)中注释掉很多日志调用。
我现在想知道是否有一些规范的方法可以以编程方式去除 Python 应用程序中的日志记录调用,而无需一直注释和取消注释。我认为您可以使用检查/重新编译或字节码操作来执行此类操作,并且仅针对导致瓶颈的代码对象。这样,您可以添加一个操纵器作为编译后步骤并使用集中配置文件,如下所示:
当然,您可能希望谨慎地使用它,并且可能以每个函数的粒度- 仅用于已显示logging
为瓶颈的代码对象。有人知道这样的事情吗?
注意:由于动态类型和后期绑定,有一些事情使得以高性能方式执行此操作更加困难。例如,对名为的方法的任何调用都debug
可能必须用if not isinstance(log, Logger)
. 无论如何,我假设所有的小细节都可以通过君子协议或一些运行时检查来克服。:-)