问题标签 [jasmin]
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.
if-statement - 如何为 if-else 语句生成字节码
如何使用可选的 ELSE 分支生成与字节码指令对应的代码 IF THEN - ELSE?
例如,程序 If-else.pas 被认为是正确的,而程序 If.pas 则被认为不正确,因为它不包含 ELSE 分支。
if-else.pas
如果.pas
所以 Jasmin 给了我这个错误:
Output.j:62:JAS 错误:标签:L11 尚未添加到代码中。
Output.j: 发现 1 个错误
我的语法 .g 有这个规则:
对于 if-else 语句,我写了这个:
但是通过这种方式,第二个分支不是可选的,而是必须始终存在。我如何使它成为可选的?我认为问号 ( ( 'else' s2 = stmt )?
) 是必要的,但没有。我正在使用 ANTLR。
谢谢。
我不知道 Jasmin 生成的字节码文件(.j)是否有用,但我写了它。
如果-else.j
如果.j
jvm - 如何在 Jasmin 中使用 invokedynamic?
这里说:
因此,我认为可以使用 jasmin 编写包含调用动力学的指令代码。但是我找不到关于 jasmin 语法的任何文档,我只是想出了如何使用 invokedynamic 来获取 Jasmin 的 VerifyErrors,但不知道如何创建一个工作示例。
这个指令如何在 Jasmin 中正确使用?
java - 生成 Jasmin j 文件优于 Java 源文件的优势是什么?
.j 文件转换为 .class 文件,.java 文件转换为 .class 文件。所以
为什么我会选择 Jasmin 而不是 javac?是否有任何性能成本?或任何其他喜欢 Jasmin 的原因。
java - 如果 javap 输出不适合 jasmin,还有什么替代方法?
我需要一些东西来替换一个类中的一个方法。jd-gui/jad 经常产生损坏的代码,甚至可以编译,但具有未定义的行为。
这就是为什么我需要一些东西来将类反编译成适合 jasmin 的汇编语言,所以重新编译后它们与原始类没有什么不同。
jvm - 字符串声明/初始化错误的 Jasmin 数组
我正在编写一个生成 Jasmin 代码的编译器,并希望创建一个数组声明,如下所示:
这当前生成以下代码:
我认为这是正确的方法,但我收到以下错误:
我是否以错误的顺序将东西推入堆栈?或者我应该在 newarray 行使用与 char 不同的类型。如果是这样,字符串使用的正确类型是什么?
jvm - Jasmin 调用本地方法导致 VerifyError
我正在尝试调用本地方法 pow(),如下所示。
我的课看起来像这样。
但是,这会导致以下错误:
我在这里做错了什么?
编辑:我的完整代码如下。请注意, pow() 是一种将第一个值提高到第二个值的幂的方法:
完整类:
jvm - Jasmin 使用参数调用方法
我正在编写一个生成 Jasmin 代码的编译器,我想使用参数调用一个方法,如下所示:
这编译为:
但是,这会导致以下错误。我在这里做错了什么?
java - 如何在茉莉花中打印长?
我可以像这样在 jasmin 中打印一个整数:
println
打印长(64 位整数)的参数是什么?
我试过
invokevirtual java/io/PrintStream/println(L)V
了,但汇编器告诉我这(L)V
是非法签名。(注意:System.out
当我尝试调用此方法时,堆栈中都有一个 long 。)
java - Java 导入、程序集 (Krakatau) 和源代码
所以这是我的情况:
我正在运行一个 CPU 使用率很高的 Java 客户端/服务器架构,并且我正在尝试减少主“服务器”线程上的延迟时间。我一直在使用 YourKit 分析服务器以识别占用 CPU 的代码。
问题是:
我正在使用别人的代码,由于它的编写方式,不可能反编译,然后在不使用我无法访问的特殊混淆器的情况下重新编译(不,我没有侵犯任何版权或任何东西)。
我目前在做什么:
为了在不担心混淆的情况下修改类文件,我一直在使用 Storyyeller 惊人的 Krakatau 反编译器 ( https://github.com/Storyyeller/Krakatau ) 将类文件反汇编成汇编文件。
我在查看 Jasmin 参考页面时手动编辑 .j 程序集文件(这需要 FOREVER 并且我经常搞砸),然后将它们重新组合成类文件并再次运行它们。
我想做的事:
我想知道,有没有人知道将 .java 源代码转换为 .j 程序集代码的方法,而不是煞费苦心地编辑程序集?
另外,如果我只是反编译 .class 文件,即使导入的包不存在,我是否可以简单地重新编译它们?
如果有人知道我可以做到这一点,我将不胜感激!
java - 如何在不编译的情况下将 Java 代码转换为 Jasmin?
我需要将一个类的一些部分转换为 Jasmin(或者如果可能的话,Smali)并将新代码与反汇编代码混合在一起。
我想知道的是:这可能吗?如果是,如何?
(我有 java 文件的差异补丁,但没有 Jar 文件的源代码,所以我决定这样做)