উত্তর:
এলএলভিএম হ'ল একটি লাইব্রেরি যা মধ্যবর্তী এবং / বা বাইনারি মেশিন কোডটি নির্মাণ, অনুকূলিতকরণ এবং উত্পাদন করতে ব্যবহৃত হয়।
এলএলভিএম সংকলক কাঠামো হিসাবে ব্যবহার করা যেতে পারে, যেখানে আপনি "সামনের প্রান্ত" (পার্সার এবং লেক্সার) এবং "ব্যাক এন্ড" (কোড যা এলএলভিএমের প্রতিনিধিত্বকে প্রকৃত মেশিন কোডে রূপান্তর করে) সরবরাহ করে।
এলএলভিএম একটি জেআইটি সংকলক হিসাবেও কাজ করতে পারে - এটি সংকলনের গতির লক্ষ্যে দ্রুত কোড অপ্টিমাইজেশনের সাথে x86 / x86_64 এবং পিপিসি / পিপিসি 64 বিধানসভা প্রজন্মের সমর্থন করে।
আপনি যদি আগ্রহী হন, আপনি তাদের ডেমো পৃষ্ঠায় সিএল বা সি ++ কোড থেকে উত্পন্ন এলএলভিএমের মেশিন কোডের সাথে খেলতে পারেন তবে ডেমো পৃষ্ঠাটি ২০১৩ সাল থেকে বর্তমানে অক্ষম রয়েছে।
এলএলভিএমের একটি ভাল সংক্ষিপ্তসার হ'ল:
সম্মুখভাগে আপনার কাছে পার্ল এবং আরও অনেক উচ্চ স্তরের ভাষা রয়েছে। ব্যাকএন্ডে, আপনার কাছে নেটিজ কোড রয়েছে যা সরাসরি মেশিনে চলে।
কেন্দ্রে আপনার মাঝারি কোড উপস্থাপনা হয়। যদি প্রতিটি উচ্চ স্তরের ভাষা এই এলএলভিএম আইআর ফর্ম্যাটে উপস্থাপন করা যায় তবে এই আইআর ভিত্তিক বিশ্লেষণ সরঞ্জামগুলি সহজেই পুনরায় ব্যবহার করা যেতে পারে - এটিই মূল কারণ।
এলএলভিএম ("লো লেভেল ভার্চুয়াল মেশিন" বলতে ব্যবহৃত তবে আর নয়) সি ++ তে লিখিত একটি সংকলক অবকাঠামো, যা সংকলন-সময়, লিংক-টাইম, রান-টাইম এবং "নিষ্ক্রিয়-সময়" রচিত প্রোগ্রামগুলির অপ্টিমাইজেশনের জন্য ডিজাইন করা হয়েছে নির্বিচার প্রোগ্রামিং ভাষায়। মূলত সি / সি ++ এর জন্য প্রয়োগ করা হয়েছে, এর পর থেকে এলএলভিএমের ভাষা-স্বাধীন নকশা (এবং সাফল্য) এর পর থেকে উদ্দেশ্য সি, ফোর্টরান, অ্যাডা, হাস্কেল, জাভা বাইটকোড, পাইথন, রুবি, অ্যাকশনস্ক্রিপ্ট, জিএলএসএল সহ বিভিন্ন প্রান্তের বিভিন্ন প্রান্ত তৈরি হয়েছে including , এবং অন্যদের.
আরো ব্যাখ্যার জন্য এই পড়া
এছাড়াও চেক আউট ভারমুক্ত সোয়ালো
মতে 'LLVM কোর লাইব্রেরি সঙ্গে শুরু করা হয়েছে' বই (গ):
প্রকৃতপক্ষে, এলএলভিএম নামটি নীচের যে কোনওটিকে বোঝাতে পারে:
এলএলভিএম প্রকল্প / অবকাঠামো: এটি বেশ কয়েকটি প্রকল্পের জন্য একটি ছাতা যা একসাথে একটি সম্পূর্ণ সংকলক গঠন করে: সম্মুখভাগ, ব্যাকেন্ড, অপ্টিমাইজার, এসেম্বলার্স, লিংকার, লাইবসি ++, সংকলক-আরটি এবং একটি জেআইটি ইঞ্জিন। "এলএলভিএম" শব্দটির এই অর্থ রয়েছে, উদাহরণস্বরূপ, নিম্নলিখিত বাক্যে: "এলএলভিএম বেশ কয়েকটি প্রকল্পের সমন্বয়ে গঠিত"।
একটি এলএলভিএম ভিত্তিক সংকলক: এটি এলএলভিএম অবকাঠামো দিয়ে আংশিক বা সম্পূর্ণ নির্মিত একটি সংকলক। উদাহরণস্বরূপ, একটি সংকলক সীমানা এবং ব্যাকএন্ডের জন্য এলএলভিএম ব্যবহার করতে পারে তবে চূড়ান্ত লিঙ্কটি সম্পাদন করতে জিসিসি এবং জিএনইউ সিস্টেম লাইব্রেরি ব্যবহার করে। নিম্নলিখিত বাক্যটিতে এলএলভিএম এর এই অর্থ রয়েছে, উদাহরণস্বরূপ: "আমি এমআইপিএস প্ল্যাটফর্মে সি প্রোগ্রামগুলি সংকলন করতে এলএলভিএম ব্যবহার করেছি"।
এলএলভিএম লাইব্রেরি: এটি এলএলভিএম পরিকাঠামোর পুনরায় ব্যবহারযোগ্য কোড অংশ। উদাহরণস্বরূপ, বাক্যে LLVM এর এই অর্থ রয়েছে: "আমার প্রকল্পটি তার জাস্ট-ইন-টাইম সংকলনের কাঠামোর মাধ্যমে কোড উত্পন্ন করতে LLVM ব্যবহার করে"।
এলএলভিএম কোর: মধ্যবর্তী ভাষা স্তরে এবং অপেক্ষাকৃত অ্যালগরিদমগুলি যে প্রকল্পটি শুরু হয়েছিল সেগুলি এলএলভিএম কোর গঠন করে The নিম্নলিখিত বাক্যটিতে এলএলভিএমের এই অর্থ রয়েছে: "এলএলভিএম এবং কলং দুটি পৃথক প্রকল্প"।
এলএলভিএম আইআর: এটি এলএলভিএম সংকলক অন্তর্বর্তী প্রতিনিধিত্ব। "আমি এমন একটি ফ্রন্টএন্ড তৈরি করেছি যা আমার নিজের ভাষা এলএলভিএম-তে অনুবাদ করে" এর মতো বাক্যগুলিতে ব্যবহার করার সময় এলএলভিএম এর এই অর্থ হয়।
এলএলভিএম মূলত একটি পাঠাগার যা সংকলক এবং / অথবা ভাষা ভিত্তিক সফ্টওয়্যার তৈরি করতে ব্যবহৃত হয়। বুনিয়াদি টুকরোটি যদিও আপনার জিসিসি রয়েছে যা সম্ভবত কমপাইলারগুলির মধ্যে সর্বাধিক সাধারণ স্যুট, এটি পুনরায় ব্যবহারযোগ্য হিসাবে তৈরি করা হয়নি। আপনার নিজের অ্যাপ্লিকেশনটি তৈরি করতে এটি জিসিসি থেকে উপাদান নেওয়া এবং এটি ব্যবহার করা কঠিন। এলএলভিএম "মডুলার এবং পুনরায় ব্যবহারযোগ্য সংকলক এবং সরঞ্জামচেন প্রযুক্তি" সেট তৈরি করে এই সমস্যাটিকে ভালভাবে সম্বোধন করে যা যে কেউ সংকলক এবং ভাষা ভিত্তিক সফ্টওয়্যার তৈরি করতে ব্যবহার করতে পারে।
কোডে অপ্টিমাইজেশন এবং রূপান্তর সম্পাদনের জন্য এলএলভিএম কমপাইলার ইনফ্রাস্ট্রাকচার বিশেষভাবে কার্যকর। এটি স্বতন্ত্র ব্যবহারের পরিবেশন করে এমন অনেকগুলি সরঞ্জাম নিয়ে গঠিত। llvm-prof একটি প্রোফাইলিং সরঞ্জাম যা প্রোগ্রাম হটস্পটগুলি সনাক্ত করতে আপনাকে এক্সিকিউশনের প্রোফাইলিং করতে দেয়। অপ্ট একটি অপ্টিমাইজেশন সরঞ্জাম যা বিভিন্ন অপ্টিমাইজেশন পাসগুলি (উদাহরণস্বরূপ মৃত কোড অপসারণ) সরবরাহ করে।
গুরুত্বপূর্ণভাবে এলএলভিএম আপনাকে নিজের পাসগুলি লেখার জন্য লাইব্রেরি সরবরাহ করে। উদাহরণস্বরূপ, যদি আপনাকে কোনও প্রোগ্রামের কয়েকটি কার্যক্রমে নির্দিষ্ট আর্গুমেন্টগুলির মধ্যে একটি পরিসীমা চেক যুক্ত করতে হয় তবে একটি সাধারণ এলএলভিএম পাস লেখার পক্ষে যথেষ্ট হবে।
আপনার নিজের পাস লেখার বিষয়ে আরও তথ্যের জন্য এই http://llvm.org/docs/WritingAnLLVMPass.html দেখুন