问题标签 [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.
java - 转换为二进制 Java 类时的 Jasmin NoSuchMethodError
我正在尝试使用 Jasmin 将 Jasmin 汇编代码转换为 Java 类文件。使用此处的 Hello World 示例。
返回以下错误:
我怀疑这可能是 Java 版本的问题,因为 Jasmin 似乎很旧并且可能使用较旧的 Java 版本实现。
到目前为止,我已尝试使用以下命令运行示例:java -jar jasmin.jar test.j
.
我曾尝试使用 Java 8、7、6 和 4 运行它,但均未成功。
我使用的 Jasmin 版本是 2.4。
此外,我还尝试下载 Jasmin 的源代码并手动编译,结果相同。
有人对如何解决此问题有任何指示或想法吗?
jvm - 为什么 Jasmin 不喜欢这个汇编代码?
我正在阅读 Joshua Engel 的 Java 虚拟机编程,并尝试输入书中的一个示例。我知道这本书使用了乌龙,而我使用的是 Jasmin,但是对于这样一个简单的示例,并且由于 Oolong 和 Jasmin 的语法非常相似,我不明白为什么这不起作用。作为旁注,我无法找到有关 Oolong 和 Jasmin 之间语法差异的任何信息。谁能指出我这样的资源?
这是代码,与书中的完全一样:
当我对此运行 Jasmin 时,出现以下错误:
那么我做错了什么?
java - 堆栈高度不一致 1 !=2
所以我试图在 Jasmin 中创建一个简单的 for 循环,每次通过循环时都会打印出 hello world。问题是每当我尝试通过添加一个来增加它时,我都会收到以下错误消息:“错误:无法初始化主类测试,原因是:java.lang.VerifyError:(类:测试,方法:主签名:([Ljava /lang/String;)V) 堆栈高度不一致 1 != 2" 当我不尝试添加一个时它可以工作,但不确定为什么当我放回它时它不会。任何帮助将不胜感激!
java - 运行 jasmin assembler 以获取 .class 文件并将其转换为 java
我在项目的终端(在 IntelliJ 想法中)运行此命令,并且我已经包含了 jasmin.jar 库。根据 Jasmin 的这个文档,它应该位于/tmp/mypackage/MyClass.class.
但我没有看到任何包。
知道这是如何工作的吗?
java - 在不创建常量池的情况下编译/反汇编 Java?
我无法理解某些 Java 字节码指令的用法,部分原因是缺乏示例。相反,我使用javac
或 Jasmin 来编译一些常规的 Java 代码,然后我使用javap -c
来检查生成的字节码。
我的项目建立在为我优化字节码的框架上,因此我自己的代码生成器不必为我管理常量池。由于javap
输出包含对常量池的大量引用,因此如果我自己不必使用这些引用,那并不能真正清除用法。
有没有办法在没有符号表(或对它的任何引用)的情况下获得反汇编的字节码?
为了详细说明,假设我们有以下代码:
这解决了:
但我宁愿拥有以下内容:
如果像提供给我的框架一样,编译器在生成第二个示例中描述的字节码后创建常量池,那么应该可以获得根本不包含符号表的字节码,对吧?
java - 将数组作为 arg 放入 java 字节码中的函数
我正在尝试使用 Jasmin 字节码将数组传递给函数。它会生成一个正确的类,但在我尝试运行它时会出错:
java.lang.VerifyError: (class: test4, method: main signature: ([Ljava/lang/String;)V) Register 1 contains wrong type
这里有什么问题?提前谢谢你的帮助!
我的字节码:
java类:
bytecode - Jasminbytecode 说它缺少指令 goto 的参数
我正在尝试在我的 jasmin 字节码程序中实现分支,但无论我尝试什么,我总是在分支上遇到语法错误。代码应该检查这两个数字是否相等,如果为真则打印“真”,否则跳转到结束标签并退出程序。
我以官方 jasmin 说明页面为例。
错误:
Jasmin 字节码文件:
jvm - 堆栈上有东西时,VerifyError 清空字节码中的堆栈
我有以下代码在使用 2 个打印语句运行时会出现错误,但是当我只执行一个时它运行良好。如果我是正确的,ldc 只是将字符串推入堆栈,因此在调用第二个打印行时,它应该仍然有一些东西在堆栈上。
错误:
jvm - 组装 jasmin 类导致倒置运算符和比较
当我尝试使用命令行组装我的test.j
jasmin 文件时,java -jar Jasmin.jar test.j
它会生成test.class
没有任何错误的文件。除了运算符和比较之外,所有代码都是相同的,all my +
will become -
,==
all become!=
等等。
我的test.j
jasmin 文件添加了 2 个数字并检查它们是否等于 7,如果为 true,则打印一些内容,否则打印其他内容。最后它总是会打印一行文本。
test.j
文件:
组装好的test.class
,5 - 3 != 7
应该在5 + 3 == 7
这里:
jvm - Java字节码,调用方法不能正常工作
当前情况和背景
对于学校作业,我们必须编写自己的编程语言。目前,我一直在尝试进行方法调用。
我可以成功地创建一个方法,但是在我试图调用它的时候,程序中断了。
测试代码
我用来测试的代码是
这会生成以下代码
- 反编译类
- Java字节码
我试过什么
我尝试使用以下 Java 字节码调用该方法:
(测试是我正在测试的类的名称)
- 调用虚拟 void/testMethod()V
- 调用虚拟测试方法()V
- 调用虚拟测试/testMethod()V
- 调用虚拟测试/void/testMethod()V
我很感激任何帮助