开发者

Programming in Java bytecode [closed]

开发者 https://www.devze.com 2023-01-05 10:25 出处:网络
Closed. This question needs to be more focused. It is not currently accepting answers. Want to improve this question? Update the question so it focuses on one problem only by editing this
Closed. This question needs to be more focused. It is not currently accepting answers.

Want to improve this question? Update the question so it focuses on one problem only by editing this post.

Closed 1 year ago.

开发者_开发知识库Improve this question

I'm looking to write a short program (maybe a Hello World) in Java bytecode. I just want to write the bytecode using my text editor and run it. How would I do this? Got an example? Thanks!


You could try Jasmin!

.class public HelloWorld
.super java/lang/Object

.method public static main([Ljava/lang/String;)V
  .limit stack 3
  .limit locals 1

  getstatic      java/lang/System/out Ljava/io/PrintStream;
  ldc            "Hello World."
  invokevirtual  java/io/PrintStream/println(Ljava/lang/String;)V

  return

.end method

You compile it using:

> java -jar jasmin.jar hello.j

And then you run it like any class:

> java HelloWorld
Hello World.

Update

I see that your question mentions "without using Javac or Java". Could you clarify how you meant that statement?


I've created a new Java bytecode assembler that is backwards compatible with Jasmin but also adds lots of new features and simplifies the syntax slightly.

Here's an example of how you might write a Hello World program.

.class public hello
.super java/lang/Object

.method public static main : ([Ljava/lang/String;)V
    .limit stack 10
    .limit locals 10

    getstatic java/lang/System out Ljava/io/PrintStream;
    ldc "Hello World!"
    invokevirtual java/io/PrintStream println (Ljava/lang/Object;)V
    return
.end method

I've also written a tutorial on bytecode assembly. It currently only covers Hello, World, but I can continue it if there is interest.


Byte code is written as actual bytes, which are not normally easily editable by a normal text editor.

This means you will need something that converts a textual representation to binary. A reasonable place to start would be an assembler like Jasmin.

0

精彩评论

暂无评论...
验证码 换一张
取 消