অবজেক্ট কোড, মেশিন কোড এবং সমাবেশ কোডের মধ্যে পার্থক্য কী?
আপনি তাদের পার্থক্য একটি চাক্ষুষ উদাহরণ দিতে পারেন?
অবজেক্ট কোড, মেশিন কোড এবং সমাবেশ কোডের মধ্যে পার্থক্য কী?
আপনি তাদের পার্থক্য একটি চাক্ষুষ উদাহরণ দিতে পারেন?
উত্তর:
মেশিন কোড বাইনারি (1 এর এবং 0 এর) কোড যা সরাসরি সিপিইউ দ্বারা কার্যকর করা যায়। আপনি যদি একটি টেক্সট এডিটর একটি মেশিন কোড ফাইল খোলার জন্য ছিল আপনি আবর্জনা দেখতে হবে, অমুদ্রণীয় অক্ষর সহ (কোন না ঐ অমুদ্রণীয় অক্ষর;))।
অবজেক্ট কোড মেশিন কোডের একটি অংশ যা এখনও একটি সম্পূর্ণ প্রোগ্রামের সাথে লিঙ্ক করা হয়নি। এটি একটি নির্দিষ্ট গ্রন্থাগার বা মডিউলটির জন্য মেশিন কোড যা সম্পূর্ণ পণ্যটি তৈরি করবে। এটিতে স্থানধারক বা কোনও সমাপ্ত প্রোগ্রামের মেশিন কোডে পাওয়া যায় না এমন অফসেটও থাকতে পারে। Linker কানেক্ট সবকিছু একসঙ্গে এইসব প্লেসহোল্ডার এবং অফসেট ব্যবহার করবে।
অ্যাসেম্বলি কোডটি প্লেইন-টেক্সট এবং (কিছুটা) মানব পঠনযোগ্য উত্স কোড যার বেশিরভাগই মেশিনের নির্দেশাবলী সহ সরাসরি 1: 1 এনালগ থাকে। এটি প্রকৃত নির্দেশাবলী, রেজিস্টার বা অন্যান্য সংস্থানগুলির জন্য স্মৃতিবিদ্যার সাহায্যে সম্পন্ন হয় accomp উদাহরণগুলি অন্তর্ভুক্ত করে JMP
এবং MULT
সিপিইউর জাম্প এবং গুণনের নির্দেশাবলীর জন্য। মেশিন কোডের বিপরীতে, সিপিইউ সমাবেশ কোডটি বোঝে না। আপনি এসেম্বলার বা সংকলক ব্যবহার করে অ্যাসেম্বলি কোডটি মেশিনে রূপান্তর করেন , যদিও আমরা সাধারণত উচ্চ-স্তরের প্রোগ্রামিং ভাষার সাথে সংযোগকারীদের কথা ভাবি যা সিপিইউ নির্দেশাবলী থেকে আরও বিমূর্ত হয়।
একটি সম্পূর্ণ প্রোগ্রাম তৈরির জন্য এসেম্বলি বা সি ++ এর মতো একটি উচ্চ স্তরের ভাষায় প্রোগ্রামের জন্য সোর্স কোড লেখা । উত্স কোডটি অ্যাসেম্বল করা হয় (এসেম্বলি কোডের জন্য) বা সংকলিত (উচ্চ স্তরের ভাষাগুলির জন্য) অবজেক্ট কোডে এবং পৃথক মডিউলগুলি একত্রে সংযুক্ত হয়ে চূড়ান্ত প্রোগ্রামের জন্য মেশিন কোড হয়ে যায়। খুব সাধারণ প্রোগ্রামগুলির ক্ষেত্রে সংযোগের পদক্ষেপের প্রয়োজন হতে পারে না। অন্যান্য ক্ষেত্রে যেমন আইডিই (সংহত বিকাশের পরিবেশ) এর সাথে লিঙ্কার এবং সংকলক একসাথে ডাকা হতে পারে। অন্যান্য ক্ষেত্রে, একটি জটিল মেক স্ক্রিপ্ট বা সমাধান ফাইলটি চূড়ান্ত অ্যাপ্লিকেশনটি কীভাবে তৈরি করা যায় তা পরিবেশকে জানাতে ব্যবহার করা যেতে পারে।
এছাড়াও ব্যাখ্যা করা ভাষা রয়েছে যা আলাদা আচরণ করে। অনুবাদ করা ভাষাগুলি একটি বিশেষ দোভাষী প্রোগ্রামের মেশিন কোডের উপর নির্ভর করে। প্রাথমিক স্তরে, একজন দোভাষী সোর্স কোডকে বিশ্লেষণ করে এবং তত্ক্ষণাত কমান্ডগুলিকে নতুন মেশিন কোডে রূপান্তরিত করে এবং কার্যকর করে। আধুনিক দোভাষী যাকে মাঝে মাঝে রানটাইম-এনভায়রনমেন্ট বা ভার্চুয়াল মেশিনও বলা হয় আরও অনেক জটিল: এক সময় উত্স কোডের পুরো বিভাগগুলি মূল্যায়ন করা, যেখানে সম্ভব সেখানে ক্যাচিং এবং অপ্টিমাইজ করা এবং জটিল মেমরি পরিচালনার কার্য পরিচালনা করা। একটি ব্যাখ্যাীকৃত ভাষাও নিম্নের স্তরের মধ্যবর্তী ভাষা বা বাইকোডে সমাবেশের কোডের মতো প্রাক-সংকলিত হতে পারে।
অন্যান্য উত্তরগুলি পার্থক্যের একটি ভাল বর্ণনা দিয়েছে তবে আপনি একটি ভিজ্যুয়াল চেয়েছিলেন। এখানে একটি চিত্র রয়েছে যা তারা সি কোড থেকে একটি নির্বাহযোগ্য পর্যন্ত যাত্রা দেখায়।
সংসদীয় কোডটি মেশিন কোডের একটি মানব পাঠযোগ্য উপস্থাপনা:
mov eax, 77
jmp anywhere
মেশিন কোডটি খাঁটি হেক্সাডেসিমাল কোড:
5F 3A E3 F1
আমি ধরে নিলাম আপনি কোনও অবজেক্ট ফাইলে যেমন অবজেক্ট কোড বোঝাচ্ছেন। এটি মেশিন কোডের একটি বৈকল্পিক, একটি পার্থক্যের সাথে জাম্পগুলি এমনভাবে পরামিতি করা হয় যাতে কোনও লিঙ্কার তাদের পূরণ করতে পারে।
একটি এসেম্বলার অ্যাসেম্বলি কোডটি মেশিন কোডে রূপান্তর করতে ব্যবহৃত হয় (অবজেক্ট কোড) একটি লিঙ্কার একটি এক্সিকিউটেবল উত্পাদন করতে বেশ কয়েকটি অবজেক্ট (এবং লাইব্রেরি) ফাইলগুলিতে লিঙ্ক করে।
আমি একবার খাঁটি হেক্সে একটি এসেম্ব্লার প্রোগ্রাম লিখেছি (কোনও এসেমব্লার উপলব্ধ নেই) ভাগ্যক্রমে এটি ভাল পুরাতন (প্রাচীন) 6502 এ ফিরে এসেছিল But
একটি পয়েন্ট যা এখনও উল্লেখ করা হয়নি তা হ'ল কয়েকটি ভিন্ন ধরণের সমাবেশ কোড রয়েছে code সর্বাধিক প্রাথমিক আকারে, নির্দেশাবলীতে ব্যবহৃত সমস্ত নম্বর অবশ্যই ধ্রুবক হিসাবে নির্দিষ্ট করা উচিত। উদাহরণ স্বরূপ:
$ 1902: বিডি 37 14: এলডিএ $ 1437, এক্স $ 1905: 85 03: STA $ 03 $ 1907: 85 09: STA $ 09 $ 1909: সিএ: ডেক্স $ 190 এ: 10: বিপিএল $ 1902
উপরের বিট কোডটি, যদি একটি আটারি 2600 কার্ট্রিজে $ 1900 ঠিকানায় সঞ্চিত থাকে, তবে একটি টেবিল থেকে প্রাপ্ত রঙের বিভিন্ন লাইন প্রদর্শিত হবে যা ঠিকানা starts 1437 থেকে শুরু হবে। কিছু সরঞ্জামগুলিতে, উপরের লাইনের ডানদিকের অংশ সহ একটি ঠিকানা টাইপ করা মধ্যম কলামে প্রদর্শিত মানগুলি স্মরণে রাখবে এবং নিম্নলিখিত ঠিকানা দিয়ে পরবর্তী লাইনটি শুরু করবে। এই ফর্মটিতে টাইপিং কোড হেক্সে টাইপ করার চেয়ে অনেক বেশি সুবিধাজনক ছিল তবে প্রত্যেকটির সুনির্দিষ্ট ঠিকানা জানতে হবে।
বেশিরভাগ একত্রিতকারী এককে প্রতীকী ঠিকানা ব্যবহারের অনুমতি দেয়। উপরের কোডটি আরও বেশি লেখা হবে:
rainbow_lp: lda কালারটিবিএল, এক্স স্টা ডাব্লুএসওয়াইএনসি স্টা ক্লাব Dex বিপিএল রংধনু_পিএল
সমাবেশকারী স্বয়ংক্রিয়ভাবে এলডিএ নির্দেশকে সামঞ্জস্য করবে তাই এটি রঙিনটিবিএল লেবেলে যে ঠিকানাটি ম্যাপ করা হয়েছিল তা উল্লেখ করবে। এসেম্বলারের এই স্টাইলটি ব্যবহার করে কোড লেখা এবং সম্পাদনা করা আরও সহজ করে তোলে যদি কারও কাছে সমস্ত ঠিকানা হ্যান্ড-কী এবং হ্যান্ড-মেইনটেন্যান্ট করতে হয়।
উত্স কোড, সমাবেশ কোড, মেশিন কোড, অবজেক্ট কোড, বাইট কোড, এক্সিকিউটেবল ফাইল এবং লাইব্রেরি ফাইল।
এই সমস্ত শর্তাদি প্রায়শই বেশিরভাগ মানুষের কাছে এই বিভ্রান্তিকর কারণ হয় যে তারা মনে করে যে তারা পারস্পরিক একচেটিয়া । তাদের সম্পর্কগুলি বোঝার জন্য চিত্রটি দেখুন। প্রতিটি পদটির বর্ণনা নীচে দেওয়া হয়েছে।
মানব পাঠযোগ্য (প্রোগ্রামিং) ভাষায় নির্দেশাবলী
উচ্চ স্তরের (প্রোগ্রামিং) ভাষায় রচিত নির্দেশাবলী
যেমন, সি, সি ++ এবং জাভা প্রোগ্রাম
একটি সমাবেশ ভাষায় লিখিত নির্দেশাবলী (নিম্ন স্তরের প্রোগ্রামিং ভাষার ধরণের)। সংকলন প্রক্রিয়ার প্রথম ধাপ হিসাবে, উচ্চ-স্তরের কোডটি এই ফর্মটিতে রূপান্তরিত হয়। এটি অ্যাসেম্বলি কোড যা পরে প্রকৃত মেশিন কোডে রূপান্তরিত হচ্ছে। বেশিরভাগ সিস্টেমে, এই দুটি পদক্ষেপ সংকলন প্রক্রিয়ার অংশ হিসাবে স্বয়ংক্রিয়ভাবে সঞ্চালিত হয়।
যেমন, program.asm
সংকলন প্রক্রিয়াটির পণ্য। এটি মেশিন কোড বা বাইট কোড আকারে হতে পারে।
যেমন, file.o
যন্ত্রের ভাষায় নির্দেশনা।
যেমন, আউটআউট
একটি মধ্যবর্তী ফর্মের নির্দেশ যা জেভিএম এর মতো দোভাষী দ্বারা সম্পাদন করা যেতে পারে।
যেমন জাভা ক্লাস ফাইল class
সংযোগ প্রসেসের পণ্য। এগুলি মেশিন কোড যা সরাসরি সিপিইউ দ্বারা চালিত হতে পারে।
উদাহরণস্বরূপ, একটি .exe ফাইল।
দ্রষ্টব্য যে কিছু প্রসঙ্গে বাইট-কোড বা স্ক্রিপ্টিং ভাষার নির্দেশাবলী সম্বলিত একটি ফাইলকে কার্যকরও বিবেচনা করা যেতে পারে।
কিছু কোড এই ফর্মটিতে বিভিন্ন কারণে যেমন পুনরায় ব্যবহারযোগ্যতার জন্য এবং পরে এক্সিকিউটিয়েবল ফাইল দ্বারা ব্যবহৃত হয়ে সংকলিত হয়।
cc1
)। আমি মনে করি asm বৃত্তটি "উত্স" বৃত্তের বাম দিকটি আটকা উচিত, কারণ কিছু asm কেবল asm হয়, উত্স নয়। এটি অবশ্যই কোডের কোনও বিষয় নয়, তবে কিছু কিছু আসাম উত্স থেকে ফাইলগুলি আপত্তি করার পথে এক ধাপ।
বিধানসভা কোড এখানে আলোচনা করা হয় ।
"একটি সংসদীয় ভাষা প্রোগ্রামিং কম্পিউটারগুলির জন্য একটি নিম্ন-স্তরের ভাষা It এটি একটি নির্দিষ্ট সিপিইউ আর্কিটেকচার প্রোগ্রাম করার জন্য সংখ্যক মেশিন কোড এবং অন্যান্য ধ্রুবকের প্রতীকী উপস্থাপনা প্রয়োগ করে।"
মেশিন কোড এখানে আলোচনা করা হয় ।
"মেশিন কোড বা মেশিন ল্যাঙ্গুয়েজ হ'ল নির্দেশাবলী এবং ডেটা সিস্টেমের কম্পিউটারের কেন্দ্রীয় প্রক্রিয়াকরণ ইউনিট দ্বারা সরাসরি সম্পাদন করে।"
মূলত, এসেম্বলারের কোডটি ভাষা এবং এটি একটি এসেম্বলারের দ্বারা (কোনও সংকলকের সমতুল্য) অবজেক্ট কোডে (সিপিইউ চালিত নেটিভ কোড) অনুবাদ করা হয়।
আমি মনে করি এগুলিই মূল পার্থক্য
পাঠ্যযোগ্যতা কোডটি লিটট প্রয়াসের সাথে তৈরি হওয়ার 6 মাস পরে উন্নত বা প্রতিস্থাপন করতে পারে, অন্যদিকে, যদি পারফরম্যান্স সমালোচনা হয় তবে আপনি যে নির্দিষ্ট হার্ডওয়্যার উত্পাদন করতে পারবেন তা লক্ষ্য রাখতে আপনি নিম্ন স্তরের ভাষা ব্যবহার করতে চাইতে পারেন, তাই পেতে দ্রুত সম্পাদন
আইএমও আজ কম্পিউটারগুলি ওপিওপি দিয়ে কোনও প্রোগ্রামারকে দ্রুত সম্পাদন করার জন্য পর্যাপ্ত দ্রুত।
সমাবেশ হ'ল সংক্ষিপ্ত বর্ণনামূলক পদ যা মানুষ বুঝতে পারে যে কোনও সিপিইউ আসলে ব্যবহার করে এমন মেশিন কোডে সরাসরি অনুবাদ করা যায়।
মানুষের দ্বারা কিছুটা বোধগম্য হলেও এসেমব্লার এখনও নিম্ন স্তরের। দরকারী কিছু করতে অনেক কোড লাগে।
সুতরাং পরিবর্তে আমরা উচ্চ স্তরের ভাষা যেমন সি, বেসিক, ফরটান (ঠিক আছে আমি জানি আমি নিজেকে তারিখ দিয়েছি) ব্যবহার করি। যখন এই উত্পাদনের অবজেক্ট কোডটি সংকলিত হয়। প্রাথমিক ভাষাগুলিতে তাদের অবজেক্ট কোড হিসাবে মেশিনের ভাষা ছিল।
আজকের অনেক ভাষা সাধারণত এই জাতীয় জাভা এবং সি # সাধারণত একটি বাইটোকডে সংকলন করে যা মেশিন কোড নয়, তবে এমন একটি যা মেশিন কোড তৈরির জন্য রান সময়ে সহজেই ব্যাখ্যা করা যায়।
আপনার প্রোগ্রামগুলির উত্স ফাইলগুলি অবজেক্ট ফাইলগুলিতে সংকলিত হয় এবং তারপরে লিংককারী সেই বস্তু ফাইলগুলিকে একসাথে লিঙ্ক করে আপনার আর্কিটেকচারের মেশিন কোডগুলি সহ একটি এক্সিকিউটেবল ফাইল তৈরি করে।
টেক্সট এডিটর দ্বারা খোলার সময় অবজেক্ট ফাইল এবং এক্সিকিউটেবল ফাইল উভয়ই আর্কিটেকচারের মেশিন কোড মুদ্রণযোগ্য এবং অ-মুদ্রণযোগ্য অক্ষরের আকারে জড়িত।
তবুও, ফাইলগুলির মধ্যে দ্বৈতত্ত্বটি হ'ল অবজেক্ট ফাইল (গুলি) এ অমীমাংসিত বাহ্যিক উল্লেখ থাকতে পারে (যেমন printf
, উদাহরণস্বরূপ)। সুতরাং, এটি অন্য অবজেক্ট ফাইলগুলির সাথে সংযুক্ত করার প্রয়োজন হতে পারে .. এর অর্থ হল, সি / সি ++ রানটাইম লাইব্রেরির মতো অন্যান্য অবজেক্ট ফাইলগুলির সাথে সংযুক্ত করে শালীন চালানোযোগ্য এক্সিকিউটেবল ফাইলটি পাওয়ার জন্য সমাধান না হওয়া সমাধান হওয়া দরকার external ।