2009-11-23 18 views
15

स्रोत कोड, बाइटकोड, असेंबली कोड, मशीन कोड, कंपाइलर्स, लिंकर्स, दुभाषिया, असेंबलर और बाकी सभी के अर्थों में विभिन्न मतभेदों की तलाश में, मैं केवल बाइटकोड और असेंबली कोड के बीच के अंतर पर भ्रमित हो गया।असेंबली कोड और बाइटकोड के बीच क्या अंतर है?

सीआईएल का वर्णन करने के लिए विशेष रूप से यह wikipedia article परिचय ने मुझे भ्रमित कर दिया क्योंकि यह दोनों शब्दों (असेंबली कोड और बाइटकोड) का उपयोग करने के लिए एक दूसरे के रूप में मुझे लगता है कि वे वास्तव में वही हो सकते हैं।

+0

यदि आपके पास एंड्रयू तनेंबाम की संरचित कंप्यूटर संगठन पुस्तक तक पहुंच है, तो उसके पास दो शर्तों की तकनीकी रूप से सही परिभाषा होगी। –

+0

भी देखें उदा। [यह उत्तर] (http://stackoverflow.com/a/2203296/874188) जावा के बारे में एक समान प्रश्न के लिए। – tripleee

+0

यह भी देखें http://stackoverflow.com/questions/17511931/what-exactly-is-bytecode – tripleee

उत्तर

2

Assembly code सामान्यतः कोड को संदर्भित करने के लिए उपयोग किया जाता है, जिसे एक बार Machine Code पर संकलित किया जाता है, जिसे वर्चुअल मशीन में bytecode पर CPU द्वारा निष्पादित किया जा सकता है।

सीआईएल पर भ्रम का स्रोत इस तथ्य से संबंधित हो सकता है कि सीपीयू एक्स के लिए machine code सीपीयू वाई (उदाहरण के लिए) पर चल रही वर्चुअल मशीन द्वारा व्याख्या की जा सकती है।

नोट है कि एक आभासी मशीन कार्यान्वयन किसी भी मशीन कोड और/या बाईटकोड व्याख्या करने के लिए तैयार किया जा सकता है: इसे डेवलपर और उनके आकांक्षा (और उनके हाथों पर समय) ;-)

+0

एक बार फिर: वास्तविक CPU द्वारा असेंबली कोड निष्पादित नहीं किया जाता है। निष्पादित किया जाता है "मशीन कोड"। असेंबली कोड मशीन कोड का मानव पठनीय रूप है (या कुछ मामलों में: बाइट कोड)। – Juergen

+0

हाँ ... क्षमा करें ... – jldupont

-1

के लिए छोड़ दिया जाता है असेंबली कोड आपके द्वारा प्रोग्रामिंग किए जा रहे प्रोसेसर के मूल कोड (प्रतिनिधित्व) है।

बाइटकोड "आदेश" के बाइनरी संस्करण के लिए एक शब्द है जिसे एक दुभाषिया या वर्चुअल मशीन द्वारा निष्पादित करने के लिए संकलित किया गया है।

संक्षेप में बाइटकोड्स वर्चुअल प्रोसेसर के लिए ऑपोडोड को परिभाषित करते हैं, जबकि असेंबली में भौतिक प्रोसेसर के ऑपोड होते हैं। (हम अब CPU के अंदर माइक्रोक्रोड को अनदेखा करेंगे :-))

+2

बिल्कुल सही नहीं है। असेंबली कोड मशीन कोड का मानव पठनीय रूप है। मशीन कोड प्रोसेसर के लिए मूल कोड है। – Juergen

+0

@ जुर्गेन, आप फॉर्म और सामग्री को मिलाते हैं, यह विस्तार या संदर्भ का विषय है जो "सीपीयू ऑपकोड्स", "मशीन भाषा", "असेंबलर" जैसी शब्दावली के बीच निर्णय लेता है। ओपी के सवाल के संदर्भ में वे बराबर imho हैं। – rsp

+0

आईएमएचओ आप चीजों को मिलाते हैं, क्योंकि आईटी लोग अक्सर अपने शब्दों में लापरवाही करते हैं, चीजें भ्रमित हो जाती हैं। असेंबली भाषा कुछ मशीन भाषा का मानव पठनीय प्रतिनिधित्व है (एक आभासी मशीन भी हो सकती है - जैसे बाइटकोड) अवधि। मेरे उत्तर में जुड़े विकिपीडिया लेख देखें। – Juergen

0

असेंबलर एक मैक्रो भाषा है। यह सीपीयू या अन्य डिवाइस को निर्देश देने के लिए इस्तेमाल निर्देशों का एक सेट है। इसका अनुवाद मशीन कोड में किया जाता है जो सीपीयू द्वारा पठनीय निर्देश हैं।

बाइट कोड वर्चुअल मशीन का व्याख्या करने के लिए निर्देश हैं और अभी भी निष्पादित होने से पहले मशीन कोड में अनुवाद करने की आवश्यकता है।

+0

असेंबलर एक मैक्रो भाषा जरूरी नहीं है। असेंबलर अपने मूल रूप में बस मशीन कोड का एक मानव पठनीय रूप है। – Juergen

11

असेंबली कोड आमतौर पर मशीन की मूल भाषा (तथाकथित मशीन भाषा) के मानव पठनीय रूप का मतलब है। दूसरी तरफ बाइट कोड मानक भाषा है जिसे बाइट कोड दुभाषिया द्वारा व्याख्या किया जा सकता है - इसलिए यह प्रोसेसर मूल भाषा नहीं है।

फिर भ्रम क्यों? आप असेंबली भाषा बनाम बाइट कोड की तुलना इस तरह से नहीं कर सकते हैं। निस्संदेह एक बाइट कोड में एक असेंबली कोड भी हो सकता है - जिसका अर्थ है कि इसका मानव पठनीय रूप है, क्योंकि "असेंबली भाषा" का अर्थ यह नहीं है कि यह वास्तविक मशीन के लिए है - लेकिन यह कुछ मूल भाषा का मानव पठनीय रूप है - प्रोसेसर के लिए, यह मूल भाषा मशीन कोड है - लेकिन आपके पास बाइटकोड जैसी छद्म- (या व्याख्या की गई) मशीन का असेंबली कोड भी हो सकता है।

यह भी देखें: Assembly Language

इसके अलावा संकट निश्चित रूप से आता है - आप सभी चर्चा यहाँ में देख सकते हैं जैसे - क्योंकि यह लोगों (यह भी अपने आप को) शब्दों में सुस्त हो जाते हैं। मशीन कोड के बारे में बोलते समय "असेंबली भाषा" का प्रयोग अक्सर किया जाता है। यह निश्चित रूप से बिल्कुल सही नहीं है, क्योंकि असेंबली भाषा केवल कुछ मशीन कोड का मानव पठनीय रूप है।जबकि बाईटकोड एक आभासी मशीन में (जैसे जावा रनटाइम के रूप में) किसी भी सीपीयू कि वीएम चला सकते हैं पर क्रियान्वित किया जा सकता

+0

आईटी लोग क्या करते हैं (उम्मीद है) फॉर्म से सारणी है। मशीन कोड और असेंबली के बीच मैपिंग लक्षित दर्शकों, सीपीयू या मानव के अनुकूलन के लिए किया जाता है। – rsp

0

एसेंबल किया कोड, एक विशिष्ट अनुदेश सेट के साथ एक CPU पर runnable है।

+0

"असम्बद्ध कोड" को "मशीन कोड" भी कहा जाता है - केवल स्पष्टीकरण के लिए। मेरे उत्तर में लिंक देखें। – Juergen

+0

जब आपका मतलब "असेंबली कोड" है, तो यह निश्चित रूप से मशीन कोड नहीं है, क्योंकि इसे पहले असेंबलर द्वारा "इकट्ठा" किया जाना चाहिए - मशीन कोड की तुलना में परिणाम। – Juergen

1

मुझे याद है कि माइक्रोकंट्रोलर और माइक्रोप्रोसेसरों की शुरुआत के बाद से शब्द असेंबली का उपयोग मानव कोड को मानवीय पठनीय तरीके से नामित करने के लिए किया गया था। ऐसा लगता है कि माइक्रोसॉफ्ट ने उसी शब्द "असेंबली" का उपयोग करके भ्रम पैदा कर दिया है जो कि उनके डॉटनेट फ्रेमवर्क कंपाइलर्स द्वारा उत्पादित बाइटकोड होगा। तो इस मामले में मैं कहूंगा कि "रनटेकोड" का अर्थ जावा रनटाइम के लिए है, "असेंबली" शब्द का यह नया उपयोग माइक्रोसॉफ्ट डॉटनेट रनटाइम पर्यावरण के लिए है। क्या मुझे यह मानना ​​गलत है?

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