JVM: Can ' T detect initial thread stack location - find_vma fehlgeschlagen
The compilation was successful
The multiplication should have been performed at compile time without any code being generated.
However, your solution generated the following code:
Java HotSpot(TM) 64-Bit Server VM warning: Can't detect initial thread stack location - find_vma failed
mov ax,5
mov ax,6
mul ax
[ the expected value was 30, but you calculated the result as 6 ]
Trat ich einige Codes in meiner Schule die system-und ich bekam diese Fehlermeldung. Ich verstehe nicht den Teil, wo er sagt: "Die Vermehrung hätte ausgeführt werden sollen, zur compile-Zeit, ohne dass ein code generiert wird.".
Wer weiß, was ich tun könnte falsch?
(Ich kann nicht verraten den code, den ich eingegeben, weil ich will es nicht zeigen, bis in eine Suchmaschine ein. Gibt es eine Möglichkeit, kann ich privat zeigen, ich den code eingegeben?)
- Ist Ihre Klasse über das schreiben eines Compilers? Wenn nicht, was Sie erwartet, zu tun, für die Zuordnung?
- Man könnte den code auf einem web-server und einen robots.txt, der fragt, die Suchmaschinen nicht indizieren. Nicht alle Suchmaschinen respektieren die robots.txt natürlich, aber die großen tun.
- Das sieht viel wie die assembly, die Sie erzeugen würden, wenn falsch konvertieren stack-basierten code (JVM) auf register-Basis (x86, MIPS).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
Can't detect initial thread stack location
schlägt vor, eine unvollständige oder beschädigte installation von Java.Das Zeug über die Multiplikation zur compile-Zeit nicht so aussieht, es kommt von Java, sondern von irgendeiner Art von IDE-oder compilation-tool, das Ihre Schule mit. Was auch immer dieses "Schulsystem" ist, müssen Sie Fragen, wer verantwortlich ist, für es zu diesen Fehlermeldungen.
Auf meinem Ubuntu 10.04/64-bit-system
java
war nicht auf die/proc
Dateisystem.Speziell, ich lief in einem
chroot
die nicht montiert:mount -t proc none /proc
Ich hatte das gleiche problem in meinem
chroot
Umgebung. Wie @chronospoon vorgeschlagen, ist es, da war java kein Zugriff auf das /proc-Dateisystem.Aber auch die richtige Montage der Befehl ist der folgende (beachten Sie, dass beide proc nicht vorangestellt
/
), wie erwähnt, in hier:Zu prüfen, ob die Montage erfolgreich ist, prüfen Sie einfach, ob die
proc
Verzeichnis eine Datei.Die Meldung "Can' T detect initial thread stack location" ist durchaus üblich, siehe z.B., hier und hier. Der restliche Teil ist seltsam, der Assembler-code ist reiner Unsinn. Ich würde keine sorgen darüber, es ist nicht deine Schuld.
mul ax
bedeutetax = ax*ax
, so das die drei Anweisungen ersetzt werden könnte durchmov ax, 36
.Ich vermute, dass dies ist ein Artefakt der "school system", das Sie verwenden, die zu sein scheint, einen Rahmen für die automatisierte code-Tests.
So, ich denke, Sie sollten sich Fragen die Leute, die das system verwalten, und (vermutlich) verstehen, was die Botschaft bedeutet.