2008-12-11 12 views
31

क्या JVM बाइटकोड निर्देश सेट सीखने के लिए कोई अच्छी जगह है। विनिर्देश शायद और शायद कुछ ट्यूटोरियल?जावा बाइटकोड विनिर्देश

मैं पूछता हूँ क्योंकि मैं एक खिलौना भाषा और कहा कि JVM बाईटकोड उत्पन्न करता है इसके लिए एक संकलक डिजाइन करने के लिए करना चाहते हैं।

आपके ज्ञान और शायद googling के लिए धन्यवाद।

उत्तर

22

जावा बाइटकोड विनिर्देश के लिए एक अच्छा संदर्भ The Java Virtual Machine Specification है।

Chapter 4. The class File Format और Chapter 6. The Java Virtual Machine Instruction Set देखें।

+0

आप unmaintained है और कई classfile सुविधाओं के लिए समर्थन की कमी है JVM विनिर्देश नहीं एक दूसरे – RobotHumans

4

इसके अलावा उपयोगी ASM और BCEL तरह javap disassembler और बाईटकोड हेरफेर चौखटे हैं, भले ही अपनी कक्षाओं को सत्यापित है तुम सब करना चाहते हैं।

1

इसमें कुछ समय और अधिक विशिष्ट है, लेकिन here कैसे JVM पर चलाने के लिए उत्पन्न बाईटकोड अनुकूलन करने के लिए पर एक ऑन लाइन प्रस्तुति है। यह हाल ही में JVM Languages Summit सम्मेलनों में प्रस्तुत किया गया था। InfoQ के पास उस सम्मेलन से a collection of presentations है जो किसी को JVM पर एक भाषा लाने की इच्छा रखने में मदद कर सकता है (या यह देखने के लिए कि पहले से ही क्या किया जा चुका है)।

4

पुस्तक Programming for the Java Virtual Machine पुस्तक JVM निर्देश सेट और इसके लिए कोड कैसे लिखती है, बताती है। यह ओलॉन्ग नामक एक बाइटकोड असेंबलर भी पेश करता है, जिसे मैं डाउनलोड नहीं कर पाया। हालांकि, आप ओलॉन्ग के पूर्ववर्ती Jasmin का उपयोग कर सकते हैं। अनिवार्य रूप से, आप निर्देशों के साथ एक टेक्स्ट फ़ाइल लिखते हैं और जैस्मीन एक .class फ़ाइल थूक जाएगा। पुस्तक 1 ​​999 में प्रकाशित हुई थी, लेकिन यह अभी भी वीएम के लिए एक अच्छा और सभ्य परिचय है।

+1

जैस्मिन को देखकर किया जाना चाहिए। मैं Krakatau असेंबलर बजाय, जो पीछे की ओर अधिक शक्तिशाली जैस्मिन के साथ संगत है, लेकिन का उपयोग कर सलाह देते हैं। (प्रकटीकरण: मैं इसे लिखा था)। – Antimony

2

के साथ, मैं अपनी भाषा से जावा कोड पैदा करने की सलाह देते हैं शुरू करने के लिए।

यह पढ़ने और डिबगिंग बहुत सरल कर देगा।

3

Java Virtual Machine Specification एक अच्छी जगह शुरू करने के लिए है।

अध्याय देखें 4 The class File Format। अपडेट दूसरे संस्करण के बाद जोड़े गए नए गुणों को कवर करते हैं।

2

शायद Preon's example on how to parse a Java class file देखें। जावा ऑब्जेक्ट मॉडल में बाइटकोड का इसका पूर्ण प्रतिनिधित्व है।

+0

लिंक मृत: इस नाम का कोई भंडार। – GKFX

+0

धन्यवाद GKFX, यह तय की। –

2

विनिर्देश का एक नया संस्करण जारी किया गया है:

The Java Virtual Machine Specification, Java SE 7 Edition

इस नए इसके अलावा जावा प्रोग्रामिंग भाषा अवधारणाओं जो लोग या उपयोगी नहीं मिल सकता है हो सकता है पर अध्याय को बाहर करता है। Spec के दूसरे संस्करण में उस अध्याय के लिए here देखें।

संबंधित मुद्दे