मैं एक शौकिया जेवीएम कार्यान्वयन पर काम कर रहा हूं, और मैं यह सुनिश्चित करने की कोशिश कर रहा हूं कि मेरे पास spec में सभी ऑपोड के लिए परीक्षण कवरेज है। मैं इसे पिछले कुछ लोगों तक प्राप्त कर चुका हूं, लेकिन nop
और swap
मुझे दूर कर रहा है। उदाहरण के लिए, यहाँ एक सरल समारोह swap
उपयोग कर सकते हैं कि क्या है:क्या जावा कोड 'स्वैप' और 'एनओपी' ऑपकोड का उपयोग करने के लिए जावा 1.6 को मजबूर करेगा?
static int do_swap() {
int a = 56;
int b = 32;
return b%a;
}
लेकिन बाईटकोड javac 1.6
द्वारा उत्पादित स्थानीय भंडारण के एवज में अदला-बदली से बचा जाता है:
static int do_swap();
Code:
0: bipush 56
2: istore_0
3: bipush 32
5: istore_1
6: iload_1
7: iload_0
8: irem
9: ireturn
कोई भी विचार?
मुझे लगता है कि क्राकाटो असेंबलर जेवीएम परीक्षण मामलों को उत्पन्न करने के लिए और अधिक उपयोगी होगा, क्योंकि यह क्लासफाइल प्रारूप की अधिक अस्पष्ट विशेषताओं का समर्थन करता है जो जैस्मीन नहीं करता है। (प्रकटीकरण मैंने इसे लिखा)। लेकिन इस तरह के कुछ आसान के लिए, जैस्मीन काफी अच्छा है। – Antimony