জেভিএম বাইটকোড পরিষদের (মাধ্যমে Jasmin ) - 952 960 990
.class public Q
.super java/io/File
.method public static main([Ljava/lang/String;)V
.limit stack 9
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc ".class public Q%n.super java/io/File%n.method public static main([Ljava/lang/String;)V%n.limit stack 9%ngetstatic java/lang/System/out Ljava/io/PrintStream;%nldc %c%s%c%nldc 3%nanewarray java/lang/Object%ndup%ndup%nldc 0%nldc 34%ninvokestatic java/lang/Integer/valueOf(I)Ljava/lang/Integer;%ndup_x2%naastore%nldc 2%nswap%naastore%ndup2%nswap%nldc 1%nswap%naastore%ninvokevirtual java/io/PrintStream/printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;%npop%nreturn%n.end method"
ldc 3
anewarray java/lang/Object
dup
dup
ldc 0
ldc 34
invokestatic java/lang/Integer/valueOf(I)Ljava/lang/Integer;
dup_x2
aastore
ldc 2
swap
aastore
dup2
swap
ldc 1
swap
aastore
invokevirtual java/io/PrintStream/printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
pop
return
.end method
দুঃখের বিষয়, জেসমিন মাইক্রোসফ্টের অনুমতি অনুসারে এত সুন্দর কৌশলগুলি মঞ্জুরি দেয় না ilasm
। তবে জেভিএমের মোট ছয়টি আলাদা dup
নির্দেশ রয়েছে যা সমস্ত ধরণের মজাদার জিনিস করে। স্ট্যাকের আইটেমগুলি পুনরায় অর্ডার করা এমন কিছু N NET সমর্থন করে বলে মনে হয় না।
যাইহোক, আমার অনুমান যে আমার দুটি এন্ট্রিগুলির মধ্যে কোনওটিই সংক্ষিপ্ত কোডের জন্য গুরুতর প্রতিযোগী নয় তবে আমার ধারণা তাদের এটিকে আরও খাটো করা শক্ত। সুতরাং কেবল সম্পূর্ণতার জন্য :-)
স্ট্যাকের কী রয়েছে সে সম্পর্কে তথ্যের সাথে মন্তব্য করা সংস্করণ:
.class public Q
.super java/io/File
.method public static main([Ljava/lang/String;)V
.limit stack 9
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc ".class public Q%n.super java/io/File%n.method public static main([Ljava/lang/String;)V%n.limit stack 9%ngetstatic java/lang/System/out Ljava/io/PrintStream;%nldc %c%s%c%nldc 3%nanewarray java/lang/Object%ndup%ndup%nldc 0%nldc 34%ninvokestatic java/lang/Integer/valueOf(I)Ljava/lang/Integer;%ndup_x2%naastore%nldc 2%nswap%naastore%ndup2%nswap%nldc 1%nswap%naastore%ninvokevirtual java/io/PrintStream/printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;%npop%nreturn%n.end method"
ldc 3 ; stack; System.out, string, 3
anewarray java/lang/Object ; stack: System.out, string, Object[3]
dup
dup ; stack: System.out, string, array, array, array
ldc 0 ; stack: System.out, string, array, array, array, 0
ldc 34 ; stack: System.out, string, array, array, array, 0, 34
invokestatic java/lang/Integer/valueOf(I)Ljava/lang/Integer;
dup_x2 ; stack: System.out, string, array, array, 34, array, 0, 34
aastore ; stack: System.out, string, array, array, 34
ldc 2 ; stack: System.out, string, array, array, 34, 2
swap ; stack: System.out, string, array, array, 2, 34
aastore ; stack: System.out, string, array
dup2 ; stack: System.out, string, array, string, array
swap ; stack: System.out, string, array, array, string
ldc 1 ; stack: System.out, string, array, array, string, 1
swap ; stack: System.out, string, array, array, 1, string
aastore ; stack: System.out, string, array
invokevirtual java/io/PrintStream/printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
pop
return
.end method
ইতিহাস:
- 2011-02-07 02:09 (990) - প্রথম কার্যক্ষম সংস্করণ।
- 2011-02-07 02:11 (960) - এর
ldc
চেয়ে ছোটbipush
বাiconst_*
।
- 2011-02-07 02:30 (952) - কে বলেছে জাভা.লং এর উত্তরাধিকারী হওয়া আমার দরকার? বিষয়? অন্যান্য শ্রেণীর নামগুলি এত খাটো :-)