Le compilateur java assembler?


Donc gcc ou n'importe quel compilateur C compilera votre source en x86 ou votre langage d'assemblage respectif, puis assemblera l'assemblage en binaire, puis le liera pour créer un exécutable. Ma question est la suivante: le compilateur java contient-il un assembleur? Ce qui signifie qu'il y a un arrêt intermédiaire parce que je comprends que le bytecode n'est pas du code machine mais qu'il est stocké en binaire et n'est pas non plus du texte brut. Je suppose que c'est juste le bytecode basé sur le texte stocké au format binaire mais je ne sais vraiment pas.

Author: fuz, 2015-02-26

2 answers

Comme vous l'avez dit, le compilateur Java génère du bytecode. Ce bytecode entre ensuite dans la machine virtuelle Java qui, comme par magie, "fait arriver le code". Puisque la JVM est une spécification qui a plusieurs implémentations, cette partie magique peut être une compilation Juste à temps ou simplement une interprétation. Question connexe ici.

Donc pour répondre à votre question, non, le compilateur java ne contient pas d'assembleur. La JVM peut en contenir un mais n'est pas forcée car c'est l'implémentation détail.

 6
Author: Ruben Vereecken, 2017-05-23 11:45:32

Le compilateur Java génère du code octet dans un format binaire qui est ensuite traduit en code machine lors de l'exécution par la machine virtuelle Java (JVM). Il est important que cette étape se produise lors de l'exécution, car cela permet aux programmes Java de s'exécuter sur plusieurs plates-formes sans recompilation.

Vous pouvez observer le bytecode dans un fichier de classe en utilisant l'utilitaire javap qui fait partie du kit de développement Java (JDK). Vous pouvez assembler votre propre bytecode en utilisant un utilitaire commeJasmin, le Assembleur Java.

 3
Author: fuz, 2015-02-26 11:47:56