ওএস এক্স-এ এলএলভিএম বনাম ঝনঝন


133

ওএস এক্স-এর এলএলভিএম, ঝনঝন এবং জিসিসি সম্পর্কিত আমার একটি প্রশ্ন রয়েছে

Llvm-gcc 4.2, llvm 2.0 এবং ঝনঝন মধ্যে পার্থক্য কি? আমি জানি যে তারা সবাই এলএলভিএম তৈরি করে তবে তারা কীভাবে আলাদা?

দ্রুত সংকলন ছাড়াও, জিসিসির ওপরে এলএলভিএমের সুবিধা কী?


9
এলএলভিএম কেবল ব্যাকএন্ড, সেখানে স্ট্যান্ড স্টোন এলএলভিএম সংকলক থাকতে পারে না ... এর জন্য কেবল আলাদা আলাদা ফ্রন্টএন্ডস যেমন জিসিসি এবং ক্ল্যাঞ্জ রয়েছে।
স্মারলিন

4
: @smerlin: "llvm কম্পাইলার" ঝনঝন + + llvm জন্য অ্যাপল এর বাণিজ্য নাম developer.apple.com/technologies/tools/...
স্টিফেন ক্যানন

অন্যান্য বিবরণগুলি এখানে: স্ট্যাকওভারফ্লো.com
মার্কো এ।

উত্তর:


201

এলএলভিএম মূলত "নিম্ন-স্তরের ভার্চুয়াল মেশিন" এর পক্ষে দাঁড়িয়েছিল, যদিও এটি এখন কেবল নিজের পক্ষে দাঁড়িয়েছে কারণ এটি প্রচলিত ভার্চুয়াল মেশিন ছাড়া অন্য কিছু হয়ে উঠেছে something এটি লাইব্রেরি এবং সরঞ্জামগুলির একটি সেট, পাশাপাশি একটি মানক মধ্যবর্তী প্রতিনিধিত্ব, যা সংকলক এবং ইন-টাইম সংকলক তৈরিতে সহায়তা করতে ব্যবহৃত হতে পারে। এটি নিজস্ব নিজস্ব মধ্যবর্তী প্রতিনিধিত্ব ব্যতীত অন্য কিছু সংকলন করতে পারে না; এটি করার জন্য এটির জন্য একটি ভাষা নির্দিষ্ট সীমানা দরকার। লোকেরা যদি কেবল এলএলভিএমকে বোঝায় তবে তারা সম্ভবত নিম্ন স্তরের গ্রন্থাগার এবং সরঞ্জামগুলি বোঝায়। কিছু লোক কলঙ্ক বা llvm-gcc কে ভুলভাবে "LLVM" হিসাবে উল্লেখ করতে পারে যা কিছু বিভ্রান্তির কারণ হতে পারে।

llvm-gcc হ'ল জিসিসির একটি পরিবর্তিত সংস্করণ, যা এলসিসিএমকে জিসিসির নিজস্ব পরিবর্তে ব্যাকএন্ড হিসাবে ব্যবহার করে। এটি এখন ড্রাগনইগের পক্ষে, যা জিসিসির নতুন প্লাগইন সিস্টেমটি জিসিসি না জাল করে একই কাজটি করার জন্য ব্যবহার করে, তা অবহিত করা হয়েছে।

কলং হ'ল সম্পূর্ণ নতুন সি / সি ++ / অবজেক্টিভ-সি সংকলক, যা তার নিজস্ব ফ্রন্টএন্ড এবং ব্যাকএন্ড হিসাবে এলএলভিএম ব্যবহার করে। এটির সুবিধাগুলি হ'ল আরও ভাল ত্রুটি বার্তা, দ্রুত সংকলন সময় এবং অন্যান্য সরঞ্জামগুলির জন্য সংকলন প্রক্রিয়াটি (যেমন এলএলডিবি ডিবাগার এবং ক্ল্যাং স্ট্যাটিক বিশ্লেষক ) হুক করার সহজ উপায় । এটি যুক্তিসঙ্গতভাবে মডিউলারও এবং তাই অন্যান্য সফ্টওয়্যারগুলির জন্য একটি লাইব্রেরি হিসাবে ব্যবহার করা যেতে পারে যা সি, সি ++, বা উদ্দেশ্য-সি কোড বিশ্লেষণ করতে হবে।

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


13
এই দুর্দান্ত উত্তরটি যুক্ত করার জন্য: ঝনঝন হ'ল লাইব্রেরির একটি সেটও (যাকে লাইবকলং বলা হয়) আপনি কোড বিশ্লেষণ, স্বতঃপূরণ, সিনট্যাক্স হাইলাইটিং ইত্যাদির মতো জিনিসগুলির জন্য ব্যবহার করতে পারেন ... এটি আইডিইগুলির জন্য খুব কার্যকর hand

5
ম্যাকস এক্স বা আইওএসের জন্য তৈরি করার সময়, বিবেচনা করুন যে কল্যাং হল এমন একটি সফ্টওয়্যার যা অ্যাপল অপারেটিং সিস্টেম সহ তাদের সমস্ত ম্যাকোস এক্স এবং আইওএস সফ্টওয়্যার তৈরি করতে ব্যবহার করে, এবং সেই ঝনঝনাই যা আপনি স্বয়ংক্রিয়ভাবে পেয়ে যাবেন, বিনা প্রচেষ্টা ছাড়াই এবং প্রত্যেকেই যা চান সাহায্যের জন্য জিজ্ঞাসা করা হয়। অ্যাপল কখনই জিসিসি অতীত জিসিসি ৪.২ সমর্থন করে নি, এবং আর কোনও সিসিএসির কোনও সংস্করণ পাঠায় না ship
gnasher729

1
@ gnasher729 হ্যাঁ, এই উত্তরটি 3 বছর আগে লেখা হয়েছিল, যখন অ্যাপল এখনও llvm-gcc এবং Clang উভয়কেই ডিফল্ট সংকলক হিসাবে llvm-gcc সহ শিপিং করছিল। তখন থেকে সময় বদলেছে।
ব্রায়ান ক্যাম্পবেল

54

এখানে 2 টি আলাদা জিনিস রয়েছে।

এলএলভিএম এটির শীর্ষে সংকলক তৈরির উদ্দেশ্যে একটি ব্যাকএন্ড সংকলক। এটি টার্গেট আর্কিটেকচারের সাথে অভিযোজিত কোডটির অনুকূলিতকরণ এবং উত্পাদন নিয়ে কাজ করে with

ক্লাং একটি সম্মুখ প্রান্ত যা সি, সি ++ এবং উদ্দেশ্য সি কোডকে বিশ্লেষণ করে এবং এটিকে এলএলভিএমের উপযোগী উপস্থাপনায় অনুবাদ করে।

llvm gcc ছিল জিসিসি ৪.২ এর উপর ভিত্তি করে এলএলভিএম ভিত্তিক সি ++ কম্পাইলারের একটি প্রাথমিক সংস্করণ, যা এখন অবহিত করা হয়েছে যেহেতু ক্লাং তার বিশ্লেষণ করতে পারে এমন সমস্ত কিছুকে পার্স করতে পারে এবং আরও অনেক কিছু।

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

এই মুহুর্তে, জিসিসি ৪.6 দ্বারা উত্পাদিত কোডটি সাধারণত কিছুটা দ্রুত হয় তবে ক্লাং ফাঁকটি বন্ধ করে দিচ্ছে।


5

llvm-gcc-4.2 আপনার কোডটি বিশ্লেষণের জন্য GCC ফ্রন্ট-এন্ড ব্যবহার করে, তারপরে LLVM ব্যবহার করে সংকলিত আউটপুট উত্পন্ন করে।

"এলএলভিএম সংকলক ২.০" আপনার কোডটি বিশ্লেষণ করতে জঞ্জাল ফ্রন্ট-এন্ড ব্যবহার করে এবং এলএলভিএম ব্যবহার করে সংকলিত আউটপুট উত্পন্ন করে। "ঝনঝন" আসলে এই সম্মুখ-প্রান্তের কেবলমাত্র নাম, তবে এটি প্রায়শই সামগ্রিকভাবে সংকলকটির নাম হিসাবে ব্যবহৃত হয়।

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