সমস্ত কম্পিউটারের জন্য কি সর্বজনীন সমাবেশের ভাষা সম্ভব?


23

আমি সংসদীয় ভাষা সম্পর্কে কয়েকটি প্রশ্ন জিজ্ঞাসা করতে চাই। আমার বোধগম্যতা এটি মেশিন ভাষার খুব কাছাকাছি, এটিকে দ্রুত এবং আরও দক্ষ করে তোলে।

যেহেতু আমাদের কাছে রয়েছে বিভিন্ন কম্পিউটার আর্কিটেকচার যা বিদ্যমান, তার মানে কি বিভিন্ন আর্কিটেকচারের জন্য আমাকে বিধানসভায় বিভিন্ন কোড লিখতে হবে? যদি তা হয় তবে কেন সমাবেশ নয়, একবার লিখুন - সর্বত্র ভাষার প্রকার চালান? এটিকে কেবল সর্বজনীন করা সহজ হবে না, যাতে আপনি কেবল এটি একবার লিখেছেন এবং এটি বিভিন্ন কনফিগারেশন সহ কার্যত কোনও মেশিনে চালাতে পারেন? (আমি মনে করি এটি অসম্ভব হবে তবে আমি কিছু কংক্রিট, গভীর-উত্তর পেতে চাই)

কিছু লোক বলতে পারে সি হ'ল আমি যে ভাষাটি খুঁজছি। আমি এর আগে সি ব্যবহার করিনি তবে আমি মনে করি এটি এখনও একটি উচ্চ-স্তরের ভাষা, সম্ভবত জাভার চেয়ে দ্রুততর, উদাহরণস্বরূপ। আমি এখানে ভুল হতে পারে।


10
আপনি কি গবেষণা করেছেন? আমরা আপনাকে আরও ভাল প্রশ্ন জিজ্ঞাসা করার জন্য জিজ্ঞাসার আগে গবেষণা করার আশা করি। সমাবেশ ভাষাতে প্রচুর লেখা আছে।
DW

4
আমরা আপনাকে জিজ্ঞাসার আগে একটি উল্লেখযোগ্য পরিমাণ গবেষণা / স্ব-অধ্যয়ন করার আশা করি এবং আপনি কী গবেষণা করেছেন তা প্রশ্নে আমাদের জানান। এই ক্ষেত্রে, গবেষণায় প্রাসঙ্গিক উইকিপিডিয়া নিবন্ধগুলি (যেমন, সমাবেশ ভাষা এবং কম্পিউটার আর্কিটেকচারের উপর) পড়া এবং কম্পিউটার আর্কিটেকচারের পাঠ্যপুস্তক পড়া অন্তর্ভুক্ত থাকতে পারে। এটি আরও ভাল প্রশ্ন করার জন্য: আপনি যদি ইতিমধ্যে না করে থাকেন তবে সেই গবেষণাটি করুন, এবং তারপরে আপনার গবেষণাটি ব্যাখ্যা করার জন্য প্রশ্নটি সম্পাদনা করুন। প্রায়শই এই জাতীয় গবেষণা আপনাকে আরও ভাল প্রশ্ন গঠনে সহায়তা করে; এবং যে কোনও ক্ষেত্রে এটি উত্তরদাতাদের আপনার ইতিমধ্যে যা জানা আছে তার পুনরাবৃত্তি এড়াতে সহায়তা করে।
DW

15
বুঝতে হবে যে / কেন অ্যাসেম্বলি বলে কোন ভাষা নেই।
রাফেল

2
সি পোর্টেবিলিটি সহ একটি "ক্লাসিক" সমস্যা হ'ল বিভিন্ন হার্ডওয়্যারে বিভিন্ন আদিম (যেমন পূর্ণসংখ্যার) আকার এবং সেখানে আরও কিছু উল্লেখ করা হয়।
vzn

3
এটি প্রযুক্তিগতের চেয়ে সামাজিক সমস্যা বেশি - আপনার সমস্ত সিপিইউ নির্মাতাকে তাদের সিপিইউ একই মেশিনের ভাষা গ্রহণ করার জন্য বোঝাতে হবে। (আসলে, x86 প্রায় এটি হতে
চলেছিল

উত্তর:


45

পরিষদের ভাষা কম্পিউটারের জন্য লেখ নির্দেশাবলী একটি উপায় নির্দেশ সেট একটি উপায় সামান্য বেশি মানুষের প্রোগ্রামারদের কাছে বোধগম্য যে এ।

বিভিন্ন আর্কিটেকচারের বিভিন্ন নির্দেশের সেট রয়েছে: প্রতিটি আর্কিটেকচারে অনুমোদিত নির্দেশাবলীর সেট আলাদা। অতএব, আপনি একবারে একবারে রান করুন-বিধানসভা কর্মসূচি রাখবেন বলে আশা করতে পারবেন না। উদাহরণস্বরূপ, x86 প্রসেসর দ্বারা সমর্থিত নির্দেশাবলীর সেটটি এআরএম প্রসেসর দ্বারা সমর্থিত নির্দেশাবলীর সেট থেকে খুব আলাদা দেখায়। আপনি যদি কোনও x86 প্রসেসরের জন্য কোনও অ্যাসেম্বলি প্রোগ্রাম লিখে থাকেন তবে এতে প্রচুর নির্দেশাবলী রয়েছে যা এআরএম প্রসেসরে সমর্থিত নয় এবং বিপরীতে।

সমাবেশ ভাষা ব্যবহারের মূল কারণটি হ'ল এটি আপনার প্রোগ্রামের উপর খুব নিম্ন-স্তরের নিয়ন্ত্রণের অনুমতি দেয় এবং প্রসেসরের সমস্ত নির্দেশাবলীর সুবিধা গ্রহণ করতে পারে: বিশেষ প্রসেসরের সাথে স্বতন্ত্র বৈশিষ্ট্যগুলির সুবিধা গ্রহণের জন্য প্রোগ্রামটি অনুকূলিতকরণের মাধ্যমে চলতে থাকবে, কখনও কখনও আপনি প্রোগ্রামটি দ্রুত করতে পারেন। একবারে চালানো-সর্বত্র দর্শন মূলত এর সাথে মতবিরোধে রয়েছে।


1
আমি মনে করি যে উত্তরটি ইতিমধ্যে আমার উত্তরের তৃতীয় অনুচ্ছেদে উত্তর দেওয়া হয়েছে। যেমনটি আপনি বলেছেন, এই জাতীয় স্কিম দক্ষ হবে না, সুতরাং এটি সমাবেশের ভাষা ব্যবহারের মূল কারণের সাথে মৌলিকভাবে মতবিরোধের মধ্যে থাকবে।
DW

26
@nTuply আপনি আপনার মেশিন ভাষাটি বিভিন্ন মেশিন সরবরাহের জন্য পরিবর্তন করার সাথে সাথে এটি ভয়াবহভাবে সমাবেশ-শৈলীর বাক্য গঠন সহ একটি উচ্চ-স্তরের ভাষাতে পরিণত হয়েছে। একবার আপনি উচ্চ-স্তরের ভাষা ব্যবহার করার সিদ্ধান্ত নিয়েছেন, আপনি পাশাপাশি বন্ধুত্বপূর্ণ বাক্য গঠন সহ একটি ব্যবহার করতে পারেন এবং সংকলকটিকে কঠোর পরিশ্রম করতে দিন।
ডেভিড রিচার্বি

15
এটি একটি "অ্যাসেম্বলি ল্যাঙ্গুয়েজ" থাকা সম্পূর্ণ মূর্খ ধারণা নয় যা বিভিন্ন মেশিনের জন্য অনুবাদ করা হয়, কারণ এলএলভিএমের "আইআর" মূলত এটি is যাইহোক, ডেভিড যে কারণে দেয়, আপনি সাধারণত এলএলভিএম সমাবেশ লিখেন না । এছাড়াও আপনার 100 সিএলভিএম-তে আপনার সি অনুবাদ করার চেয়ে ঝাঁকুনির চেয়ে 100 বারের মধ্যে 99 বার আপনি এটি লেখার আরও খারাপ কাজ করবেন। সংসদীয় ভাষাগুলি উচ্চ-স্তরের ভাষার চেয়ে সম্ভাব্য বেশি দক্ষ, তবে বেশিরভাগ প্রকৃত প্রোগ্রামারদের হাতে বিশেষ সময়ের জন্য অনুকূলতার জন্য উপযুক্ত পরিমাণে এগুলি তাদের সম্ভাব্যতায় পৌঁছায় না।
স্টিভ জেসোপ

9
@nTuply, এটি বিদ্যমান। সেই অতিরিক্ত-সমাবেশ ভাষা থেকে মেশিনের নির্দেশে যাওয়ার প্রক্রিয়াটিকে সংকলন বলা হয়।
পল ড্রপার

3
@ পিজেট্রেইল প্রথম সিস্টেমে বুটস্ট্র্যাপিং পদক্ষেপ (এবং বেশিরভাগ সময়, এমনকি তখনও নয়) ব্যতীত আধুনিক সিস্টেমে এসেম্বলারের মধ্যে সংকলক লেখার কোনও কারণ নেই। উচ্চ-স্তরের ভাষায় রচনা করা সংকলকগুলি প্রকৃতপক্ষে রক্ষণাবেক্ষণের সম্ভাবনা অনেক বেশি। এছাড়াও তুলনা করুন যে ভাষার সংকলক সি-তে লেখা আছে সে ভাষা কীভাবে সি এর চেয়ে দ্রুততর হতে পারে? । সংকলকটির উদ্দেশ্য হ'ল এক ভাষা (উত্স ভাষা) থেকে অন্য ভাষায় অনুবাদ করা (সাধারণত নির্দিষ্ট আর্কিটেকচার এবং ওএসের জন্য মেশিনের ভাষা); এটি যে কোনও ভাষায় লেখা যেতে পারে।
একটি সিভিএন

13

সমাবেশ ভাষার সংজ্ঞাটি হ'ল এটি এমন একটি ভাষা যা সরাসরি মেশিন কোডে অনুবাদ করা যায়। সমাবেশ ভাষায় প্রতিটি অপারেশন কোড লক্ষ্য কম্পিউটারে ঠিক একটি ক্রিয়ায় অনুবাদ করে। (ভাল, এটি এর চেয়ে আরও জটিল: কিছু সমাবেশকারীগণ একটি অপি-কোডের তর্কগুলির ভিত্তিতে স্বয়ংক্রিয়ভাবে একটি "অ্যাড্রেসিং মোড" নির্ধারণ করে But তবে তবুও নীতিটি হ'ল সমাবেশের একটি লাইন একটি মেশিন-ভাষা নির্দেশকে অনুবাদ করে))

আপনি কোনও সন্দেহ নেই, এমন ভাষা উদ্ভাবন করতে পারেন যা সমাবেশ ভাষার মতো দেখায় তবে বিভিন্ন কম্পিউটারে বিভিন্ন মেশিন কোডগুলিতে অনুবাদ করা হবে। তবে সংজ্ঞা অনুসারে, এটি সমাবেশের ভাষা হবে না। এটি একটি উচ্চ-স্তরের ভাষা হবে যা সমাবেশ ভাষার সাথে সাদৃশ্যপূর্ণ।

আপনার প্রশ্নটি জিজ্ঞাসার মতো কিছুটা, "এমন কোনও নৌকা তৈরি করা সম্ভব যা ভাসতে না পারে বা জলের উপর দিয়ে যাতায়াতের অন্য কোনও উপায় নেই, তবে চাকা এবং মোটর রয়েছে এবং স্থল পথে ভ্রমণ করতে পারে?" উত্তরটি হ'ল সংজ্ঞা অনুসারে, এ জাতীয় যানবাহন নৌকা হবে না। এটি আরও গাড়ির মতো শোনাচ্ছে।


1
সি প্রায়শই "বহনযোগ্য সমাবেশ ভাষা" হিসাবে বর্ণনা করা হয়।
ল্যারি গ্রিটজ

2
@ ল্যারিগ্রিটস শিওর এবং সি আবিষ্কার করা হয়েছিল, এটি যুগোপযোগী ছিল: এটি একটি সংকলিত ব্যবহারের সহজলভ্যতা সহ সংসদীয় ভাষার প্রচুর শক্তি সরবরাহ করেছিল। তবে সংজ্ঞা অনুসারে, এটি এখনও একটি সংকলিত ভাষা
জয়

8

বিশ্বের সমস্ত কম্পিউটারের জন্য একটি সংসদীয় ভাষা থাকার বিরুদ্ধে কোনও ধারণামূলক (আমি সাহস, কম্পিউটার বিজ্ঞান ) কারণ নেই reason আসলে, এটি অনেক কিছুই সহজ করে তুলবে। যতক্ষণ তত্ত্বের সাথে সম্পর্কিত তবে এগুলি কিছুটা একইরকম, যাইহোক, কিছুটা মজাদার বাইজেকশন পর্যন্ত।

বাস্তবে, তবে বিভিন্ন অপারেশন এবং ডিজাইনের নীতিগুলি (যেমন, আরআইএসসি বনাম সিআইএসসি) সহ বিভিন্ন উদ্দেশ্যে বিভিন্ন চিপ রয়েছে, এবং নির্দেশাবলী যা সেগুলি পরিচালনা করে এবং এর সাথে সমাবেশের ভাষাগুলি পৃথক করে। শেষ পর্যন্ত, উত্তরটি কেন একই রকম জিজ্ঞাসা করার সময় যেমন বিভিন্ন প্রোগ্রামিং ভাষা রয়েছে : বিভিন্ন লক্ষ্য, ভিন্ন ডিজাইনের সিদ্ধান্ত।

এটি বলেছিল, কিছু ভাগ করে নেওয়া ইন্টারফেসে যেতে আপনি অবশ্যই বিমূর্ততার স্তরগুলি প্রবর্তন করতে পারেন। উদাহরণস্বরূপ, x86 বেশ কিছু সময়ের জন্য চিপ স্তরের সাথে শেষ হয়ে গেছে; হার্ডওয়ারের একটি সামান্য অংশ রয়েছে যা আপনার প্রসেসরটি যা কাজ করে সত্যই তা x86 নির্দেশকে অনুবাদ করে। সি এর মতো ভাষা হ্যাশকেল, জাভা বা রুবির মতো সমস্ত ভাষা থেকে হার্ডওয়্যার থেকে অন্য ধাপ (যদি তর্কাত্মকভাবে ক্ষুদ্রতর হয়) থেকে দূরে থাকবে। হ্যাঁ, সংকলক কম্পিউটার বিজ্ঞানের অন্যতম প্রধান সাফল্য কারণ তারা এই ফ্যাশনে উদ্বেগকে আলাদা করা সম্ভব করে।


6
"যদি একটি যুক্তিযুক্তরূপে ক্ষুদ্রতম" - ঠিক সেখানে আপনার দুই প্রকারের প্রোগ্রামার রয়েছে। যারা সি কে নিম্ন-স্তরের ভাষা হিসাবে বিবেচনা করে কারণ এর মৌলিক ক্রিয়াকলাপগুলি দেখতে অনেক ধরণের জিনিস যা সিপিইউ নির্দেশিকা সেটগুলিতে প্রদর্শিত হয় এবং যারা সি কে উচ্চ-স্তরের ভাষা হিসাবে বিবেচনা করে কারণ এটি মেশিনের মতো একই নির্দেশিকা সেট নয় ।
স্টিভ জেসোপ

যদি অ্যাসেম্বলি ভাষার মাধ্যমে আপনি বোঝাতে চান যে কোনও একটি হার্ডওয়ারের নির্দিষ্ট ধরণের (বা পরিবার) জন্য উত্পন্ন মেশিন কোডের উপরে সম্পূর্ণ নিয়ন্ত্রণ দেওয়া হয় তবে একটি নির্দিষ্ট মুহুর্তে আমাদের বিশ্বের "সমস্ত কম্পিউটারের জন্য" একটি ভাষা সংজ্ঞায়িত করা সম্ভব হবে, তবে এটি হবে পরিবর্তন রাখতে হবে। এটি স্বীকৃতভাবে (যদি ভালভাবে ডিজাইন করা থাকে) একটি নতুন আর্কিটেকচারের কোডিংয়ের জন্য শিখনের বর্ধনকে সংক্ষিপ্ত করে তুলবে তবে আমি আশা করি যে সংকলক পরিবর্তে আপনি যে কাজটি করতে চান তা কেবলমাত্র স্থাপত্যের ক্ষুদ্র ভগ্নাংশের জন্যই প্রযোজ্য। একটি বিমূর্ত স্তরে কম্পিউটারগুলি একই রকম হয় এটি একটি লাল হেরিং, এটি মেশিন কোড সম্পর্কে।
পিজেট্রিল

7

আপনি এর তাত্পর্যটি লক্ষ্য না করে "একবারে লেখুন একবার লিখুন" বাক্যাংশটি উল্লেখ করেন। এটি সান মাইক্রোসিস্টেমগুলির বিপণন স্লোগান যা জাভা জন্য "ভার্চুয়াল মেশিন" এবং "বাইটকোডস" ধারণাটি বাণিজ্যিকভাবে আবিষ্কার করেছিল , যদিও সম্ভবত এই ধারণাটির উদ্ভব একাডেমিয়ায় হতে পারে ১ মঞ্চে have। জাভা লাইসেন্সিং লঙ্ঘনের জন্য সান দ্বারা সফলতার সাথে তাদের বিরুদ্ধে মামলা করার পরে মাইক্রোসফ্ট দ্বারা এই ধারণাটি নোটের জন্য নোটের জন্য অনুলিপি করা হয়েছিল। জাভা বাইটকোডগুলি ক্রস-মেশিন অ্যাসেমব্লিং বা মেশিন ল্যাঙ্গুয়েজের ধারণার একটি বাস্তবায়ন। এগুলি জাভা বাদে অন্য কয়েকটি ভাষার জন্য ব্যবহৃত হয় এবং তাত্ত্বিকভাবে যে কোনও ভাষা সংকলন করতে ব্যবহৃত হতে পারে। বেশ কয়েক বছর অতি উন্নততর অপ্টিমাইজেশনের পরে, জাভা উচ্চতর পারফরম্যান্স প্ল্যাটফর্ম-অজনস্টিক ভার্চুয়াল মেশিন প্রযুক্তির লক্ষ্যটি সাধারণভাবে অর্জনযোগ্য, এমন সংকলিত ভাষাগুলির সম্পাদনায় পারফরম্যান্সের কাছাকাছি চলে আসে।

আপনার প্রয়োজনীয়তার সাথে সম্পর্কিত প্রাথমিক পর্যায়ে / সঞ্চালনের আরও একটি নতুন ধারণাটিকে পুনঃনির্মাণ প্রকল্প বলা হয় এবং এটি বৈজ্ঞানিক গবেষণার জন্য যদিও এটি অন্য উদ্দেশ্যে ব্যবহৃত হতে পারে। ধারণাটি হ'ল ভার্চুয়াল মেশিন প্রযুক্তির মাধ্যমে গণ্য পরীক্ষাগুলি প্রতিরূপযোগ্য rep এটি মূলত নির্বিচারে হার্ডওয়ারে বিভিন্ন মেশিন আর্কিটেকচারের অনুকরণ করার ধারণা।


8
সান ভার্চুয়াল মেশিন বা বাইট কোড আবিষ্কার করেনি, তারা এগুলি উপার্জনের প্রথম গ্রুপও ছিল না। পি কোড দেখুন।
jmoreno

@ জোমোরনো: তিনি হয়তো স্মলটাল্ক সন্ধান করতে চাইবেন।
বব জার্ভিস - মনিকা

নিবন্ধটি সান আবিষ্কার ভার্চুয়াল মেশিন / বাইট কোড দাবি করে না not অন্যান্য ইতিহাস রয়েছে যা উদ্ধৃত হয় নি তবে ইঙ্গিত দেওয়া হয়। এখানে আরও প্রাসঙ্গিক আরেকটি মূল প্রযুক্তি
বিটিডব্লিউ

5

উচ্চ স্তরের কারণ

আপনি যখন এটির বিষয়ে চিন্তা করেন, একটি মাইক্রোপ্রসেসর একটি আশ্চর্যজনক কাজ করে: এটি আপনাকে একটি মেশিন নিতে দেয় (যেমন একটি ওয়াশিং মেশিন বা একটি লিফট), এবং কাস্টম-ডিজাইন করা মেকানিজম বা সার্কিটের পুরো অংশটিকে একটি সস্তা, ভর উত্পাদিত সিলিকন দিয়ে প্রতিস্থাপন করে চিপ। আপনি যন্ত্রাংশে প্রচুর অর্থ এবং ডিজাইনে প্রচুর সময় সাশ্রয় করেন।

তবে অগণিত কাস্টম ডিজাইনের পরিবর্তে একটি স্ট্যান্ডার্ড চিপ, থাকুন ? একক, নিখুঁত মাইক্রোপ্রসেসর হতে পারে না যা প্রতিটি অ্যাপ্লিকেশনের জন্য উপযুক্ত। কিছু অ্যাপ্লিকেশনগুলিকে বিদ্যুতের ব্যবহার হ্রাস করতে হবে তবে দ্রুত হওয়া দরকার না; অন্যদের দ্রুত হওয়া দরকার তবে প্রোগ্রাম করা সহজ হওয়ার দরকার নেই, অন্যদের স্বল্প ব্যয় হওয়া দরকার etc.

সুতরাং, আমাদের মাইক্রোপ্রসেসরের অনেকগুলি "স্বাদ" রয়েছে যার প্রত্যেকটির নিজস্ব শক্তি এবং দুর্বলতা রয়েছে। এটি সবার জন্য একটি সামঞ্জস্যপূর্ণ নির্দেশিকা সেট ব্যবহার করা বাঞ্ছনীয়, কারণ এটি কোডটি পুনরায় ব্যবহারের অনুমতি দেয় এবং সঠিক দক্ষতা সম্পন্ন লোকদের সন্ধান করা সহজ করে তোলে। যাইহোক, নির্দেশ সেট করে , খরচ, জটিলতা, গতি প্রভাবিত আরাম অফ ব্যবহার, এবং প্রসেসর শারীরিক সীমাবদ্ধতার এবং তাই আমরা একটি আপস আছে: কয়েকটি "মূলধারার" নির্দেশ সেট (এবং অনেক ছোটখাট বেশী), এবং প্রতিটি নির্দেশের সেটে বিভিন্ন বৈশিষ্ট্যযুক্ত অনেকগুলি প্রসেসর রয়েছে।

ওহ, এবং প্রযুক্তি পরিবর্তনের সাথে সাথে এই সমস্ত বাণিজ্য-অফস পরিবর্তিত হয়, সুতরাং নির্দেশিকা সেটগুলি বিকশিত হয়, নতুন উদ্ভূত হয় এবং পুরানো মারা যায়। এমনকি যদি আজকের কোনও "সেরা" নির্দেশিকা সেট থাকে তবে এটি 20 বছরের মধ্যে নাও হতে পারে।

হার্ডওয়্যার বিশদ

সম্ভবত কোনও নির্দেশের সেটের বৃহত্তম নকশার সিদ্ধান্তটি হ'ল শব্দের আকার , অর্থাত্ প্রসেসর কতটা বড় "প্রাকৃতিকভাবে" ম্যানিপুলেট করতে পারে। 8-বিট প্রসেসর 0-255 থেকে সংখ্যার সাথে লেনদেন করেন, যেখানে 32-বিট প্রসেসর 0 থেকে 4,294,967,295 পর্যন্ত সংখ্যার সাথে লেনদেন করেন। একটির জন্য ডিজাইন করা কোডটির জন্য অন্যটির জন্য সম্পূর্ণ পুনর্বিবেচনা করা দরকার।

এক নির্দেশ থেকে অন্য নির্দেশিকায় সেট করা নির্দেশাবলীর অনুবাদ করার বিষয়টি কেবল নয়। একটি সম্পূর্ণ ভিন্ন পদ্ধতির কোনও ভিন্ন নির্দেশের সেটে পছন্দনীয় হতে পারে। উদাহরণস্বরূপ, একটি 8-বিট প্রসেসরে একটি সন্ধানের টেবিলটি আদর্শ হতে পারে, যখন 32-বিট প্রসেসরের উপর একটি গাণিতিক ক্রিয়াকলাপ একই উদ্দেশ্যে আরও ভাল be

নির্দেশের সেটগুলির মধ্যে অন্যান্য বড় পার্থক্য রয়েছে। বেশিরভাগ নির্দেশাবলী চারটি বিভাগে পড়ে:

  • গণনা (গাণিতিক এবং যুক্তি)
  • নিয়ন্ত্রণ প্রবাহ
  • তথ্য স্থানান্তর
  • প্রসেসরের কনফিগারেশন

প্রসেসররা কোন ধরণের গণনা সম্পাদন করতে পারে তার পাশাপাশি তারা কীভাবে নিয়ন্ত্রণ প্রবাহ, ডেটা স্থানান্তর এবং প্রসেসরের কনফিগারেশনের কাছে যায় তার মধ্যে পার্থক্য রয়েছে।

উদাহরণস্বরূপ, কিছু এভিআর প্রসেসর গুন বা ভাগ করতে পারে না; সমস্ত x86 প্রসেসর করতে পারেন। আপনি যেমন কল্পনা করতে পারেন, গুণ এবং বিভাগের মতো কাজের জন্য প্রয়োজনীয় সার্কিটরি অপসারণ একটি প্রসেসরটিকে সহজ এবং সস্তা করে তুলতে পারে; এই অপারেশনগুলি এখনও প্রয়োজন হলে সফ্টওয়্যার রুটিন ব্যবহার করে সম্পাদন করা যেতে পারে।

x86 গাণিতিক নির্দেশাবলী মেমরি থেকে তাদের অপারেশনগুলি লোড করতে এবং / অথবা তাদের ফলাফলগুলিকে মেমোরিতে সংরক্ষণ করার অনুমতি দেয়; এআরএম একটি লোড-স্টোর আর্কিটেকচার এবং এইভাবে মেমরি অ্যাক্সেসের জন্য কয়েকটি উত্সর্গীকৃত নির্দেশনা রয়েছে। এদিকে x86 শর্তসাপেক্ষে - শাখার নির্দেশাবলী উত্সর্গ করেছে, আর এআরএম কার্যত সমস্ত নির্দেশকে শর্তসাপেক্ষে কার্যকর করার অনুমতি দেয় । এছাড়াও, এআরএম বেশিরভাগ গাণিতিক নির্দেশাবলীর অংশ হিসাবে বিট-শিফট সম্পাদনের অনুমতি দেয়। এই পার্থক্যগুলি বিভিন্ন পারফরম্যান্স বৈশিষ্ট্য, অভ্যন্তরীণ নকশা এবং চিপের দামের মধ্যে পার্থক্য এবং সমাবেশ ভাষা স্তরে প্রোগ্রামিং কৌশলগুলির মধ্যে পার্থক্য নিয়ে যায়।

উপসংহার

সার্বজনীন অ্যাসেম্বলি ভাষার পক্ষে অসম্ভব যে কারণটি হ'ল, এক নির্দেশ থেকে অন্য নির্দেশে সেট করা অ্যাসেম্বলি কোডটি সঠিকভাবে রূপান্তর করার জন্য, অবশ্যই কোডটি পুনরায় ডিজাইন করতে হবে - কম্পিউটার এখনও কিছু করতে পারে না।


দুর্দান্ত উত্তর! লোকেরা যথেষ্ট পরিমাণে বুঝতে পারে না যে প্রোগ্রামিং করা দরকার এমন কম্পিউটিং জিনিসগুলি আমাদের মাঝে রয়েছে। এটি কেবল আমাদের স্ক্রিনে চলমান অ্যাপ্লিকেশনগুলিই নয়। প্রতিবছর কত বিলিয়ন চিপ তৈরি হয়?
পিএইচএস

4

ডিডাব্লু দ্বারা দুর্দান্ত জবাব যোগ করা: আপনি যদি কোনও উপকারকারী সংগ্রহ করতে চান তবে এটির মধ্যে সমস্ত আর্কিটেকচার, নিখুঁত অনুবাদক বজায় রাখা এবং আপনি কী করছেন তা পুরোপুরি বুঝতে হবে।
এক আর্কিটেকচারে কিছু ভারি অপ্টিমাইজড কোডগুলির ডিওপিমাইজ করা প্রয়োজন, আরও বিমূর্ত স্তরে বুঝতে হবে এবং অন্যের জন্য অপ্টিমাইজ করা প্রয়োজন।
তবে এটি সম্ভব হলে আমাদের নিখুঁত সি সংকলক থাকত এবং খাঁটি সমাবেশে লিখন মোটেই উপকারী হবে না।
এসেম্বলারের ব্যবহারের প্রধান বিষয় হ'ল পারফরম্যান্স, যা সাম্প্রতিক সংকলকগুলি থেকে চেঁচানো যায় না।
এই জাতীয় প্রোগ্রামটি লিখলে বিদ্যমান সংকলকগুলির চেয়ে আরও শক্ত হয়ে ওঠা এবং নতুন যে সমস্ত আর্কিটেকচার তৈরি করা হচ্ছে তা বজায় রাখা আরও কঠিন করে তুলবে।
এবং "কেবলমাত্র একটিমাত্র" প্রোগ্রামের জন্য এর অর্থ পুরো পিছনের সামঞ্জস্যতা।


বেশিরভাগ ক্ষেত্রে, জিসিসি প্রোগ্রামারের ক্যানের চেয়ে আরও ভাল অপ্টিমাইজেশন সম্পাদন করে। এসেম্বলার ব্যবহারের প্রধান বিষয় হ'ল রেজিস্টারগুলিতে অ্যাক্সেসের মতো সি তে আপনি না করতে পারেন এমন জিনিসগুলি করা। যদি আপনি লিনাক্স উত্স গাছের দিকে তাকান তবে তারা এটির জন্য সমাবেশটি ব্যবহার করে।
slebetman

@ স্লেবেটম্যান - জিসিসি আপনাকে অ্যাসেম্বলির অবলম্বন না করে কোনও রেজিস্ট্রারে ভেরিয়েবল রাখতে দেয়।
জিরকা হানিকা

@ জিরকাহানিকা: আপনি কি সিপিইউ রেজিস্ট্রার বা বিশেষ উদ্দেশ্যে নির্দেশিত বিশেষ উদ্দেশ্যে হার্ডওয়্যার রেজিস্টার সম্পর্কে কথা বলছেন? আমি সন্দেহ করি স্ল্যাবেটম্যান মানেই উত্তরোত্তর।
পিজেট্রাইল

"সমস্ত কোড" - "জিসিসি আরও ভাল করে" = "আপনি এসেম্বেলার ব্যবহার করেন"। হ্যাঁ আপনি এসেমব্লার সন্নিবেশ ছাড়াই নিবন্ধগুলি অ্যাক্সেস করতে পারেন।
এভিল

@ পিজেট্রাইল - স্লেবটম্যানের মন্তব্যটি সাধারণত দুর্দান্ত এবং সম্ভবত উত্তরের সাথে সংযুক্ত করা উচিত। তবে, তার দুটি উদাহরণই (রেজিস্টার অ্যাক্সেস এবং লিনাক্স উত্স ট্রি) সাধারণ ভ্রান্ত ধারণাগুলি খাওয়ানোর সম্ভাবনা রয়েছে তার চেয়েও যে তারা জিসিসি এক্সটেনশনের সাহায্যে সিতে কেউ কী করতে পারে না তার দুর্দান্ত উদাহরণ হতে পারে ; এগুলি প্রতিস্থাপন করা বা বাদ দেওয়া উচিত। (যদি আজ এইচডাব্লুয়ের কিছু করার নির্দেশনা থাকে তবে আপনার এখন থেকে এক বছর একই গিসি এক্সটেনশন থাকবে always সবসময় নয়, তবে খুব প্রায়ই
Ex

3

মাইক্রোসফ্ট এমএসআইএলকে মধ্যবর্তী সমাবেশের ভাষা হিসাবে আবিষ্কার করেছিল। প্রোগ্রামগুলি সি # বা ভিবি.নেট থেকে এমএসআইএল পর্যন্ত সংকলন করবে। চলাকালীন, এমএসআইএল একটি জেআইটি সংকলক ব্যবহার করে যে মেশিনটি চালাচ্ছিল তার মেশিন কোডে সংকলিত হয়েছিল । প্রোগ্রামটি শুরু করার জন্য এক্স 86 এর শুরুতে কয়েকটি নির্দেশাবলীর সাথে এমএসআইএলযুক্ত ফাইলটি একটি .EXE ফাইল ছিল। একটি এআরএম প্রসেসরে, আপনি এটি চালানোর জন্য প্রোগ্রামের নামের সামনে মনো শব্দটি টাইপ করতে পারেন।


"মধ্যবর্তী সমাবেশ ভাষা" এবং "ভার্চুয়াল মেশিন" এর মধ্যে পার্থক্য কী?
বব জার্ভিস - মনিকা

@ বোবি জারভিস: একটি কোড কোড এবং অন্যটি একজন অনুবাদক। মধ্যবর্তী সমাবেশ এবং বাইটকোডের মধ্যে কী পার্থক্য রয়েছে তা আপনাকে জিজ্ঞাসা করা উচিত ছিল
slebetman

এটি প্রশ্নের উত্তর বলে মনে হচ্ছে না। যতক্ষণ না প্রতিটি মেশিন এমএসআইএলকে পৃথকভাবে সংকলন / একত্রিত করে, এ সম্পর্কে সর্বজনীন কিছুই নেই এবং এই জাতীয় সংকলনের উদ্দেশ্য জেনেরিক কার্যকারিতার চিত্র আঁকানো, এবং কোনও নির্দিষ্ট নির্দেশিকার সেটের শোষণ নয়, যা ডিডাব্লু উল্লেখ করেছে যে, (বা ক) এসেম্বলার ব্যবহারের কারণ।
পিজেট্রাইল

3

উল্লিখিত হিসাবে, এলএলভিএম এটি এখন পর্যন্ত সবচেয়ে কাছের জিনিস। প্রকৃত সর্বজনীন ভাষার ক্ষেত্রে একটি বড় বাধা অন্তর্নিহিত ট্রেড অফসের সাথে সম্পর্কিত মৌলিক পার্থক্য হতে চলেছে: একচেটিয়া, মেমরির ব্যবহার, থ্রুপুট, বিলম্বিতা এবং বিদ্যুৎ খরচ। আপনি যদি স্পষ্টভাবে সিমডি স্টাইলে লিখেন তবে আপনি খুব বেশি স্মৃতি ব্যবহার করতে পারেন। আপনি যদি স্পষ্টভাবে এসআইএসডি স্টাইলে লিখেন তবে আপনি সাবঅপটিমাল প্যারালালাইজেশন পাবেন। আপনি যদি থ্রুপুটটির জন্য অনুকূলিত হন তবে আপনি বিলম্বকে আঘাত করেছেন। আপনি যদি একক থ্রেডড থ্রুপুট (অর্থাত্: ঘড়ির গতি) সর্বাধিক করেন তবে আপনি ব্যাটারির জীবনকে আঘাত করছেন।

খুব কমপক্ষে, কোডটির ট্রেড-অফগুলির সাথে মন্তব্য করতে হবে। ভাষার পক্ষে সবচেয়ে ভাল যা হতে পারে তা হল ভাল বীজগণিত / প্রকারের বৈশিষ্ট্য যা সংকলককে যৌক্তিক অসঙ্গতিটি অনুকূলিত করতে এবং সনাক্ত করতে প্রচুর উইগল রুম দেয়।

তারপরেই রয়েছে অপরিবর্তিত আচরণের প্রশ্ন। সি এবং অ্যাসেম্বলি ভাষার বেশিরভাগ গতি অনির্ধারিত আচরণ থেকে আসে। যদি আপনি অনির্ধারিত আচরণটি স্বীকার করেন যা আসলে ঘটে থাকে তবে আপনি তাদের বিশেষ কেস হিসাবে পরিচালনা করবেন (যেমন: আর্কিটেকচার এবং প্রসঙ্গে নির্দিষ্ট হ্যাক)।


0

সম্ভবত আপনি যা খুঁজছেন তা হ'ল ইউনিভার্সাল টার্নিং মেশিন নোটেশন যেখানে প্রত্যেকটি আদেশের জন্য প্রতীকগুলির সাথে একমত হয়। ( https://en.wikedia.org/wiki/Universal_Turing_machine )

একটি 'এসেম্বলার' যা অন্তর্নিহিত বিক্রেতার নির্দিষ্ট মেশিন কোডে একটি টার্নিং গ্রহণযোগ্য ভাষা অনুবাদ করে এবং আমরা কম্পিউটারগুলিতে কল করি এমন কোনওটির জন্য বিল্ড করুন।

ইন কম্পিউটার আর্ট প্রোগ্রামিং সেখানে কি ভালো চেহারা হতে পারে একটি উদাহরণ।

তবে এই প্রশ্নটি বিবেচনা করুন "কেন তাদের বাণিজ্যিকভাবে উপলব্ধ সর্বজনীন ভাষা যে সমস্ত কম্পিউটারের সাথে ব্যবহার করা যায় না" আমি পরামর্শ দিচ্ছি যে সবচেয়ে প্রভাবশালী প্রভাবগুলি (1) সুবিধার্থে নয়, সমস্ত সমাবেশের ভাষাই সর্বাধিক সুবিধাজনক নয়; (২) অর্থনীতি, বিভিন্ন ব্র্যান্ড এবং বিক্রেতাদের মেশিনের মধ্যে অসম্পূর্ণতা সরবরাহ করা একটি ব্যবসায়ের কৌশল এবং মেশিনগুলি ডিজাইনের সীমিত সংস্থান (সময় / অর্থ) এর ফলাফল।


প্রশ্নটি এমন একটি সংসদীয় ভাষা সম্পর্কে জিজ্ঞাসা করছে যা কোনও কম্পিউটার প্রোগ্রাম করার জন্য ব্যবহার করা যেতে পারে, "ইউনিভার্সাল ট্যুরিং মেশিন" অর্থে সর্বজনীন একটি সমাবেশ ভাষা নয় computer
ডেভিড রিচারবি

1
চার্চ-টিউরিং আমাদেরকে ইউটিসি জানায় যে কোনও প্রোগ্রামযোগ্য কম্পিউটার যা করতে পারে তা করতে পারে। সীমাবদ্ধ শারীরিক সঞ্চয় সংক্রান্ত সমস্যা বাদে from কোনও ইউটিসির জন্য অ্যাসেম্বলি ভাষা যথেষ্ট সম্ভাব্য। তবে আমি যেমন বলেছি যে সাংস্কৃতিক ও অর্থনৈতিক বাস্তবতা বাজারে বাস্তব বাস্তবায়ন এবং গ্রহণকে সীমাবদ্ধ করতে পারে।
ক্রিস

আপনি সবচেয়ে বড় সমস্যাটি মিস করছেন, যা পারফরম্যান্স ! হার্ডওয়্যার-অজোনস্টিক হওয়ার কিছু উচ্চ লক্ষ্যমাত্রার জন্য কেন আস্তে আস্তে একটি ভাষা ব্যবহার করবেন? ট্যুরিং মেশিন ব্যবহারিক কম্পিউটিংয়ের জন্য একটি ভয়ানক মডেল।
আর্টিলিয়াস

1
মন্তব্যকারীরা তাদের দাবি ফিরিয়ে দেওয়ার জন্য কোনও কম্পিউটার বিজ্ঞান দেওয়ার বিষয়ে চিন্তা করবে? এটি সমস্ত কম্পিউটার সায়েন্স ফোরামের পরে।
ক্রিস

1
আমি কোনও সিএস বিশেষজ্ঞ নই। তবে আমার বিশ্বাসটি হ'ল ভন নিউমান আর্কিটেকচারটি ইঞ্জিনিয়ারিংয়ের একটি উজ্জ্বল অংশ যা প্রোগ্রামেবলি এবং পারফরম্যান্সের মধ্যে ভারসাম্য বজায় রাখে, যদিও ট্যুরিং মেশিনের উদ্দেশ্যটি দেখানো হয় যে এমনকি সবচেয়ে বেসিক মেশিনটি আরও জটিল মেশিনটি যে কোনও কিছু গণনা করতে পারে তা গণনা করতে পারে। অবশ্যই, আপনি কোনও টিউরিং মেশিনে আরও বেশি করে বৈশিষ্ট্য যুক্ত করতে পারেন (আরও টেপ, পাটিগণিত) তবে তারপরে আপনি একই সমস্যাটি পেয়ে যাবেন প্রথম স্থানে, লোকেরা কোনও নির্দেশের সেটে সম্মত নয়। এছাড়াও, এলোমেলোভাবে অ্যাক্সেসের অভাব অনেক অ্যালগরিদমে বড় ওভারহেড তৈরি করে।
আর্টিলিয়াস

0

অনুমান: একটি উচ্চ-স্তরের ভাষা L1 সংশ্লেষ এবং অনুকূলকরণ উচ্চ স্তরের ভাষা L2 (L1 এর চেয়ে বেশি) থেকে L0 সংকলন ও অনুকূলকরণের চেয়ে সহজ; L2 থেকে L0 এর তুলনায় L1 থেকে L0 সংকলন করার সময় আপনি অনুমিতভাবে আরও বেশি অনুকূলিত কোড উত্পন্ন করতে পারেন যে অর্থে সহজ।

আমি মনে করি অনুমানটি সম্ভবত সঠিক, সে কারণেই সম্ভবত বেশিরভাগ সংকলকগণ নিম্ন-স্তরের মধ্যবর্তী ভাষা (আইআর / এলএলভিএম) ব্যবহার করেন।

যদি এটি নিম্ন-স্তরের কোনও ভাষা L0 ব্যবহার করে এবং অন্যান্য নিম্ন-স্তরের ভাষাগুলিতে L0 অনুবাদ করতে সংকলকগুলি লেখার চেয়ে সত্য হয়। উদাহরণস্বরূপ, এমআইপিএস নির্দেশিকা সেট ব্যবহার করুন এবং এটি x86, বাহু, শক্তি, ...

-Taoufik


তাহলে আপনি জানেন না আপনার উত্তরটি সত্য কিনা? এবং এটি সমর্থন করতে পারে না?
এভিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.