# Java Assembly Code



## schoppenhauer_entfernt_ (17. Jan 2004)

Hat irgendjemand eine Ahnung vom Java Assembly Code, oder woher man einen Java-Assembler bekommt? Und vielleicht sowas wie ein Tutorial? Ich weiß lediglich, dass es sowas gibt. Aber wo, weiß ich nicht? Und hat es einen Vorteil, soetwas für einfache Algorithmen zu benutzen? Gilt für Java auch das allgemeine Gesetz, dass Compiler immer langsameren Code produzieren, als Assembler?
Für weitere Infos wäre ich sehr Dankbar...


----------



## Roar (17. Jan 2004)

1. was soll denn java assembly code sein??
2. zu der geschwindigkeit: das kannst du doch gar nicht vergleichen. wenn du assembler schreibst ist das code der vom assembler ein bisl umgewandlt wird, und dann direkt vom prozesser ausgeführt wird. wenn du c schreibst wird der c-source zu op-code umgewandelt der dann ebenfalls vom prozessor direkt ausgeführt wird. wenn du java schreibst, wird der code in eine andere form von code geschrieben, der aber nicht vom prozesser, sondern von der vm ausgeführt wird. du kannst also nicht fragen ob der compiler langsameren code produziert, weils beides was anderes ist. im endeffekt ist java aber natürlich langsamer...


----------



## Nobody (17. Jan 2004)

es ist sicherlich um längen schneller in assembler etwas zu erzeugen, aber wenn dir mal nur einfache codes anschaust, siehst du das die ganz schön happig sind. auch ist das variablen verwalten um etliches schwerer.
aber ich gehe hier jetzt von reinem assembler (ausglegt für tasm) aus. aber nichts desto trotz werd ich mich demnächst daran machen


----------



## schoppenhauer_entfernt_ (17. Jan 2004)

Also. Java ist ja bekanntlich in einem Bytecode gespeichert, der von der VM partiell weitercompiliert wird, und ausgeführt wird. Da dieser Code auch aus Befehlen besteht, gibt es einen assembly code. Und diesen kann man direkt in eine Sprache übertragen, die als Java Assembler bezeichnet wird. Soviel weiß ich - ganz sicher... Aber mehr auch nicht.
Die Befehle in den Packages sind immer sehr speziell.

Nur angenommen, ich täusche mich...
Was sind dann die elementaren Befehle in Java, auf denen alle Java-Klassen basieren? Was wird dann überhaupt in .class-Dateien gespeichert?


----------



## Roar (17. Jan 2004)

@nobody: viel spaß. ich habs auch mal versucht.. is ziemlich ätzend...
is dieses java assembly denn von sun?
also ich weiß nicht wie der compiler die class dateien erzeugt, was der dareinschreibt, und was dann die vm damit macht.


----------



## marsias (18. Jan 2004)

Hi!

Kann heutzutage überhaupt jemand Assembler ?! :shock:


----------



## AlArenal (18. Jan 2004)

marsias hat gesagt.:
			
		

> Hi!
> 
> Kann heutzutage überhaupt jemand Assembler ?! :shock:



Ich kann noch etwas 8088/8086 Assembler. Und der Assembler der ARM-Prozessoren, die in den Acorn-Maschinen liefen, war nur geil. Es gab lediglich 27 Befehle, aber alle konnte man mit einer Bedingung versehen. Hammergeil...

Und 8051 (C-64) und 68000 (Atatri ST, Commodore Amiga) können sicher auch nich ein paar


----------



## bröggle (18. Jan 2004)

arm-prozessoren sind doch auch in so pda's drin...

ist das dann leichter da was zu programmieren?
tut?


----------



## stev.glasow (18. Jan 2004)

marsias hat gesagt.:
			
		

> Hi!
> 
> Kann heutzutage überhaupt jemand Assembler ?! :shock:


hier wird's zu mindest versucht.  :wink:


----------



## AlArenal (18. Jan 2004)

bröggle hat gesagt.:
			
		

> arm-prozessoren sind doch auch in so pda's drin...
> 
> ist das dann leichter da was zu programmieren?
> tut?



Deren Befehlerssatz hat sich auch weiterentwickelt. Seinerzeit war bei den Acorn-Maschinen das komplette OS in Assembler geschrieben, passte in 2 MB ROM. Das machte es ziemlich einfach in Assembler auch auf Betriebssystemfunktionen zuzugreifen. Und natürlich ist es leichter in Assembler zu programmieren, wenn man nicht hunderte von Befehlen hat und so ein verkorkstes Design wie bei Intels x86-Architektur 

War ne lustige Zeit, damals..


----------



## Pulvertoastman (19. Jan 2004)

Ein paar Anregungen wie man so etwas machen kann, kannst du hier finden:

http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html

Das Dokument richtet sich in erster Linie an Entwickler von Java Compilern, du findest aber sicherlich auch etwas, wenn du dich per pedes an die Geschichte wagen willst.

Ich kenne aber eigentlich niemanden, der ernsthaft versucht, JAVA in Assembler zu programmieren. Wenn du ernsthafte Performance Probleme hast solltest du dir mal ein paar Vorschläge anschauen, wie man die Performance verbessern kann oder aber überlegen, ob JAVA wirklich die geeignete Sprache ist.


----------



## desert pinguin (19. Jan 2004)

Wenn jemand noch Interesse hat, kann sich mal BCEL unter http://jakarta.apache.org/bcel/index.html anschauen.


----------



## LastUnicorn (21. Jan 2004)

Da gibts doch auch diesen JET Compiler, der das gleich so durchkompiliert, dass es ohne Interpreter ausführbar ist oder irre ich da ?


----------



## Pulvertoastman (21. Jan 2004)

Nein, ist korrekt.

Dann gibt es auch noch den gcj
http://gcc.gnu.org/java/
und andere...

Ist aber fraglich, ob die tatsächlich so starke Geschwindigkeitsvorteile bringen. Sicherlich beim Starten der Anwendung.
Wer Interesse hat, sollte sich vielleicht mal den folgenden Artikel antun:
http://www-106.ibm.com/developerworks/library/j-native.html


----------

