Jasmin
这篇文章主要教你jasmin的环境的搭建,基本编译语法,以及如何从java快速编写jasmin程序,以应付课程任务,鉴于网上相关资源太少,也没什么人研究这个,写自己的第一篇Blog,回忆一下jasmin的学习过程吧0.0
jasmin环境搭建与基本编译操作:
首先您只需要支付5积分便可从我分享的资源下载jasmin并获得本人编写的部分jasmin例程供你学习.链接附文章末尾
准备工作:下载jdk并配置好环境变量,命令行输入java --version检查是否成功
jasmin内部文件+examples例程:
编译步骤:
- win+R 输入cmd打开命令行操作界面,打开jasmin文件夹所在目录:这里我将它放在D下方便操作
- 输入:java -jar jasmin.jar examples\q2.j(ps:q2.j为笔者所写的冒泡排序)编译,(Generated编译成功)生成class执行文件.
- 输入:java q2运行(q2对应代码中的q2类,如果代码中你给debug,那么它编译之后便生产的debug.class可执行文件)
.class public q2
.super java/lang/Object
.method public <init>()V
aload_0
invokenonvirtual java/lang/Object/<init>()V
return
.end method
.method public static main([Ljava/lang/String;)V
.limit locals 20
.limit stack 10
new java/util/Scanner
dup
getstatic java/lang/System.in Ljava/io/InputStream;
invokespecial java/util/Scanner/<init>(Ljava/io/InputStream;)V
astore_0
bipush 10
newarray int
astore_1
iconst_0
istore_2
ldc "input:"
getstatic java/lang/System/out Ljava/io/PrintStream;
swap
invokevirtual java/io/PrintStream/print(Ljava/lang/String;)V
Loadarray:
aload_0
invokevirtual java/util/Scanner/nextInt()I
istore_3
aload_1
iload_2
iload_3
iastore
iinc 2 1
iload_2
bipush 10
if_icmplt Loadarray
bubsort:
aload_1
arraylength
istore 4
iload 4
bipush 1
isub
istore 11
iconst_0
istore 5
Loop_1:
iconst_0
istore 6
iload 5
iload 4
if_icmplt Loop_2
goto output
Loop_2:
iload 11
iload 5
isub
istore 10
iload 6
iload 10
if_icmplt exchange_judge
goto else_1
exchange_judge:
aload_1
iload 6
iaload
iload 6
bipush 1
iadd
istore 7
aload_1
iload 7
iaload
if_icmpgt exchange
goto else_2
exchange:
aload_1
iload 6
iaload
istore 8
aload_1
iload 7
iaload
istore 9
aload_1
iload 6
iload 9
iastore
aload_1
iload 7
iload 8
iastore
goto else_2
else_1:
iinc 5 1
goto Loop_1
else_2:
iinc 6 1
goto Loop_2
output:
ldc "order:"
jsr Print
iconst_0
istore 12
Loop_3:
aload_1
iload 12
iaload
istore 13
getstatic java/lang/System.out Ljava/io/PrintStream;
iload 13
invokevirtual java/io/PrintStream/print(I)V
ldc " "
jsr Print
iinc 12 1
iload 12
bipush 10
if_icmplt Loop_3
ldc " whlll "
jsr Print
ldc " 19041420 "
jsr Print
return
Print:
astore 2
getstatic java/lang/System/out Ljava/io/PrintStream;
swap
invokevirtual java/io/PrintStream/print(Ljava/lang/String;)V
ret 2
.end method
请忽视笔者的学号姓名0.0
4.运行结果:
So easy!
当你会java后,情况就变得不一样了:
当你有一个约瑟夫环的java代码+javap
约瑟夫环 java:
package YSF;
import java.util.Iterator;
import java.util.Scanner;
/*
* 500个小孩围一圈,数到3的退出,问剩下最后的小孩原来是多少号?
* author@
* */
public class YueSeFuHuan
{
public static void main(String[]