问题标签 [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.

0 投票
1 回答
2191 浏览

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

0 投票
1 回答
439 浏览

jvm - 如何在 Jasmin 中使用 invokedynamic?

这里说:

因此,我认为可以使用 jasmin 编写包含调用动力学的指令代码。但是我找不到关于 jasmin 语法的任何文档,我只是想出了如何使用 invokedynamic 来获取 Jasmin 的 VerifyErrors,但不知道如何创建一个工作示例。

这个指令如何在 Jasmin 中正确使用?

0 投票
2 回答
966 浏览

java - 生成 Jasmin j 文件优于 Java 源文件的优势是什么?

.j 文件转换为 .class 文件,.java 文件转换为 .class 文件。所以

为什么我会选择 Jasmin 而不是 javac?是否有任何性能成本?或任何其他喜欢 Jasmin 的原因。

0 投票
1 回答
318 浏览

java - 如果 javap 输出不适合 jasmin,还有什么替代方法?

我需要一些东西来替换一个类中的一个方法。jd-gui/jad 经常产生损坏的代码,甚至可以编译,但具有未定义的行为。

这就是为什么我需要一些东西来将类反编译成适合 jasmin 的汇编语言,所以重新编译后它们与原始类没有什么不同。

0 投票
1 回答
833 浏览

jvm - 字符串声明/初始化错误的 Jasmin 数组

我正在编写一个生成 Jasmin 代码的编译器,并希望创建一个数组声明,如下所示:

这当前生成以下代码:

我认为这是正确的方法,但我收到以下错误:

我是否以错误的顺序将东西推入堆栈?或者我应该在 newarray 行使用与 char 不同的类型。如果是这样,字符串使用的正确类型是什么?

0 投票
1 回答
716 浏览

jvm - Jasmin 调用本地方法导致 VerifyError

我正在尝试调用本地方法 pow(),如下所示。

我的课看起来像这样。

但是,这会导致以下错误:

我在这里做错了什么?

编辑:我的完整代码如下。请注意, pow() 是一种将第一个值提高到第二个值的幂的方法:

完整类:

0 投票
1 回答
1952 浏览

jvm - Jasmin 使用参数调用方法

我正在编写一个生成 Jasmin 代码的编译器,我想使用参数调用一个方法,如下所示:

这编译为:

但是,这会导致以下错误。我在这里做错了什么?

0 投票
2 回答
1257 浏览

java - 如何在茉莉花中打印长?

我可以像这样在 jasmin 中打印一个整数:

println打印长(64 位整数)的参数是什么?

我试过 invokevirtual java/io/PrintStream/println(L)V了,但汇编器告诉我这(L)V是非法签名。(注意:System.out当我尝试调用此方法时,堆栈中都有一个 long 。)

0 投票
1 回答
347 浏览

java - Java 导入、程序集 (Krakatau) 和源代码

所以这是我的情况:

我正在运行一个 CPU 使用率很高的 Java 客户端/服务器架构,并且我正在尝试减少主“服务器”线程上的延迟时间。我一直在使用 YourKit 分析服务器以识别占用 CPU 的代码。

问题是:

我正在使用别人的代码,由于它的编写方式,不可能反编译,然后在不使用我无法访问的特殊混淆器的情况下重新编译(不,我没有侵犯任何版权或任何东西)。

我目前在做什么:

为了在不担心混淆的情况下修改类文件,我一直在使用 Storyyeller 惊人的 Krakatau 反编译器 ( https://github.com/Storyyeller/Krakatau ) 将类文件反汇编成汇编文件。

我在查看 Jasmin 参考页面时手动编辑 .j 程序集文件(这需要 FOREVER 并且我经常搞砸),然后将它们重新组合成类文件并再次运行它们。

我想做的事:

我想知道,有没有人知道将 .java 源代码转换为 .j 程序集代码的方法,而不是煞费苦心地编辑程序集?

另外,如果我只是反编译 .class 文件,即使导入的包不存在,我是否可以简单地重新编译它们?

如果有人知道我可以做到这一点,我将不胜感激!

0 投票
1 回答
1106 浏览

java - 如何在不编译的情况下将 Java 代码转换为 Jasmin?

我需要将一个类的一些部分转换为 Jasmin(或者如果可能的话,Smali)并将新代码与反汇编代码混合在一起。
我想知道的是:这可能吗?如果是,如何?

(我有 java 文件的差异补丁,但没有 Jar 文件的源代码,所以我决定这样做)