ভবিষ্যতে পিআইসি মাইক্রোকন্ট্রোলারদের জন্য কি সি ++ তে কোড লেখা সম্ভব হবে?


8

কোডিং পিক্সের জন্য কি সি ++ ব্যবহার করা কখনও সম্ভব হবে? এমন কোনও হার্ডওয়্যার সীমাবদ্ধতা রয়েছে যা আমাদের সি ++ ব্যবহার করতে বাধা দেয়? যখন আমরা C এর পরিবর্তে C ++ ব্যবহার করি তখন প্রোগ্রামটির উত্পন্ন .hex ফাইলের আকার এবং চলমান সময়ের পরিমাণ কত বৃদ্ধি পায়? বর্তমান পিআইসির জন্য কি সি ++ ব্যবহার করা ব্যবহারিকভাবে সম্ভব? এ নিয়ে কি ভবিষ্যতের কোন পরিকল্পনা বা চলমান উন্নয়ন আছে?


আমি মনে করি এটি সম্ভব এবং সম্ভবও থাকবে, তবে এটি
আফ্রিকের


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

2
@ ক্লাবাচিও: অগত্যা সত্য নয়। সি ++ এ আপনি যা ব্যবহার করেন তার জন্য কেবল অর্থ প্রদান করেন। আমার উত্তর এখানে দেখুন: ইলেক্ট্রনিক্স.সটাকেক্সচেঞ্জ
3027/…

"PICs" একটি অকেজো সাধারণকরণ। কিছু নিম্ন-সমাপ্ত PICs (10F200 মনে করুন) সি ব্যবহার করা প্রায় অসম্ভব। কিছু হাই-এন্ড পিকস (32 এমএক্স সিরিজ) এ সি ++ এখনই ব্যবহার করার গুজব রয়েছে, এবং এটি কেন সম্ভব হয়নি তার কোনও প্রযুক্তিগত কারণ অবশ্যই নেই। সুতরাং কিছু ভাল ফোকাস করা আরও কার্যকর ব্যবহারের উত্তর দিতে পারে, এখনই প্রত্যেকেই একটি ভিন্ন প্রশ্নের উত্তর দেওয়ার ক্ষেত্রে কার্যকর।
ওয়াউটার ভ্যান ওইজেন

উত্তর:


17

কোডিং পিক্সের জন্য কি সি ++ ব্যবহার করা কখনও সম্ভব হবে?

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

আরেকটি বিকল্প হ'ল সি কনভার্টারে সি ++ ব্যবহার করা। প্রাক-বিল্ড পদক্ষেপটি ব্যবহার করে, সি ++ কে সিতে রূপান্তর করুন, তারপরে (ন্যক্কারজনক) সি আপনার সাধারণ সি সংকলককে দিন। এলএলভিএম বা কমো এর সি ++ সংকলকটি দেখুন যা উভয়ই এটি করে। কমেউ কেবলমাত্র 50 ডলার, তবে পুরো সরঞ্জামচইন এবং লাইব্রেরিগুলি সঠিকভাবে কাজ করতে এটি পেতে সম্ভবত কিছু প্রচেষ্টা লাগবে।

এমন কোনও হার্ডওয়্যার সীমাবদ্ধতা রয়েছে যা আমাদের সি ++ ব্যবহার করতে বাধা দেয়?

সংক্ষিপ্ত উত্তর, না, কোনও হার্ডওয়্যার সীমাবদ্ধতা নেই। দীর্ঘ উত্তর, সি ++ অবশ্যই একটি হিপ এবং / বা স্ট্যাকের ব্যবহারকে উত্সাহ দেয়, যা সীমিত র‌্যামযুক্ত ছোট এমসিইউগুলির সাথে লড়াই করবে।

কেন তারা স্তূপ / স্ট্যাকের সাথে লড়াই করে? দুটি কারণে: ক) অনেক এমসিইউগুলির সীমাবদ্ধ র‌্যাম রয়েছে, এটি অবশ্যই স্তূপের জন্য যথেষ্ট নয়, এবং স্ট্যাকের জন্য সবে যথেষ্ট। খ) অনেক এমসিইউ পয়েন্টারগুলিকে ভালভাবে পরিচালনা করে না, তাই স্ট্যাকের মধ্যে ভেরিয়েবলগুলির ব্যবহার কার্যকারিতাটিকে হ্রাস করে।

লোকেরা যখন কোনও এমসিইউতে সি ++ ব্যবহারের বিষয়ে জিজ্ঞাসা করে, তখন আমি সি ++ সি এর সাথে তুলনা করা গঠনমূলক মনে করি যে এমসিইউতে সি সম্পর্কে ঠিক একই প্রশ্নগুলি ছিল (এবং এখনও রয়েছে)। লোকেরা এই ধারণাটি নিয়ে ঝাপটায়। 256 বাইট র‌্যাম এমসিইউতে একটি উচ্চ স্তরের ভাষা ?? অসম্ভব। তবে এখন আমরা সবাই জানি এটি সম্ভব। আমি একটি PIC12 এর জন্য সি লিখেছি। সমস্যা নেই. এটি সম্ভব হয়েছে কারণ এ) সফ্টওয়্যার বিকাশকারীরা জানেন যে তাদের কিছুটা সতর্কতা অবলম্বন করতে হবে: ম্যালোক () ইত্যাদি ব্যবহার করবেন না এবং বি) সংকলকটি বিশেষত এমসইউয়ের জন্য লেখা হয়েছে। সংকলক মেমরি বরাদ্দের সাথে অতিরিক্ত সতর্কতা অবলম্বন করবে, এটি একটি গাদা তৈরি করার চেষ্টা করবে না এবং একটি স্ট্যাক তৈরি নাও করতে পারে। কিছু সি সংকলক কেবল আপনাকে পুনরায় প্রবেশকারী (পুনরাবৃত্ত) কোড লিখতে দেয় না যা একেবারে স্ট্যাকের প্রয়োজন।

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

এখন, PIC32 গুলি অবশ্যই C ++ এর সাথে লড়াই করতে পারে। তাদের 64৪ কেবি র‌্যাম রয়েছে এবং এটি এমআইপিএস কোর-এর উপর ভিত্তি করে রয়েছে, যা সঠিকভাবে বেড়ে ওঠা 32-বিট প্রসেসর। এটি পয়েন্টার এবং স্ট্যাকের পাশাপাশি একটি পিসি নিয়ে কাজ করতে পারে। প্রকৃতপক্ষে, এমআইপিএসের ভিত্তিতে পিসি রয়েছে (বা কমপক্ষে সেখানে ব্যবহৃত হত)।

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

যখন আমরা C এর পরিবর্তে C ++ ব্যবহার করি তখন প্রোগ্রামটির উত্পন্ন .hex ফাইলের আকার এবং চলমান সময়ের পরিমাণ কত বৃদ্ধি পায়?

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

এ নিয়ে কি ভবিষ্যতের কোন পরিকল্পনা বা চলমান উন্নয়ন আছে?

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


হালনাগাদ

মাইক্রোচিপটিতে এম্বেড এমসিইউগুলির তার পিআইসি 32 পরিসরের জন্য একটি সি ++ সংকলক উপলব্ধ।



আইএআর ওয়েব পৃষ্ঠা থেকে: "লিগ্যাসি পণ্য: ডিএসপিকের জন্য আইএআর এম্বেডড ওয়ার্কবেঞ্চ একটি উত্তরাধিকার পণ্য I
জেসন এস

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

হ্যাঁ, দুঃখিত, এটি আসলে একটি দুর্দান্ত আবিষ্কার ছিল না। আমাকে আমার উত্তরে আরও কিছু জিনিস যুক্ত করতে দিন।
রকেটম্যাগনেট

1
আমি সি একটি মাইক্রোকন্ট্রোলারের সি ++ এর প্রতিযোগী হিসাবে বিবেচনা করব। আমি সি ++ তে যা করতে চাই তার কিছুই ভাবতে পারি না যা আমি সি তে করতে পারি না এবং সেখানে অদৃশ্য ফাংশন কল (কনস্ট্রাক্টর, ডেস্ট্রাক্টর ইত্যাদি) রয়েছে। কোডটিকে আরও নির্বিচারক এবং সরল করে তোলে। সি ++ এর এমন বৈশিষ্ট্যগুলি অবশ্যই আবশ্যক যা সি এর সাথে মিশে যায় না?
রাগ করুন 13

1
যে কেউ জিজ্ঞাসা করতে পারে: "সি এর এমন বৈশিষ্ট্যগুলির কী এমন হওয়া আবশ্যক যা এএসএমের মধ্যে মিশে যেতে পারে না?" উত্তর, "কিছুই না"। সুবিধাগুলি ডিজাইনারকে ডিজাইন নির্দিষ্ট করার ক্ষমতা বাড়িয়েছে এবং সংযোজকটি পরীক্ষা করে বাস্তবায়নটি সঠিক কিনা তা পরীক্ষা করে। এক্ষেত্রে সি ++ এর আসল এবং তাত্ক্ষণিক সুবিধার তালিকার জন্য আমার উত্তর ইলেক্ট্রনিক্স.স্ট্যাকেক্সেঞ্জার / সেকশনস /3027/… দেখুন।
রকেটমেগনেট

5

যখন আমরা C এর পরিবর্তে C ++ ব্যবহার করি তখন প্রোগ্রামটির উত্পন্ন .hex ফাইলের আকার এবং চলমান সময়ের পরিমাণ কত বৃদ্ধি পায়?

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

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


ওপি-র জন্য একটি সতর্কতা হিসাবে দেখানো, ছোট মেমরি আর্কিটেকচার এবং এম্বেড সর্বদা চলমান সিস্টেমগুলিতে মেমরি বরাদ্দ সম্পর্কে খুব সতর্কতা অবলম্বন করুন।
কেনে

"-1" এর অনুগ্রহ করে কেন তিনি / তিনি রাজি নন সে সম্পর্কে মন্তব্য করতে পারেন?
জেসন এস

আমি -1er নই তবে টেমপ্লেটগুলি এমন একটি বৈশিষ্ট্য যা কোড ফুটা এড়াতে খুব যত্ন সহ ব্যবহার করতে হবে। আপনি ইলিসিলিটি একটি অ্যালগরিদমের অনেকগুলি অনুলিপি সহ শেষ করতে পারেন যখন কোনওটি যথেষ্ট হবে।
পিটার গ্রিন

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


1

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


0

সম্ভবত হ্যাঁ .. তবে যাইহোক আপনার উচিত হবে না ... সি এম্বেডের ভাষা এবং সি ++ ব্যবহারের কোনও সুবিধা নেই। অথবা বরং, এম এর এম্বেড করার জন্য সি এর সুবিধাগুলি সি ++ এর সুবিধার চেয়েও বেশি। আপনার সময় নষ্ট করবেন না।

  • আপনি যদি ফাংশন পয়েন্টার ইত্যাদি ব্যবহার করতে জানেন তবে আপনি সি ++ এর মতো কোড করতে পারেন, সেখানে কোনও সমস্যা নেই।

5
আমি আলাদা করতে অনুরোধ। আপনি সি ++ এর অনেকগুলি বৈশিষ্ট্য (ক্লাস, টেম্পলেট, অপারেটর ওভারলোডিং, রেফারেন্স) অল্প অল্প রানটাইম ব্যয় সহ ব্যবহার করতে পারেন। হ্যাঁ, আপনি এই সমস্ত জিনিস হ্যাকিশ কনস্ট্রাক্টস দিয়ে প্লেইন সিতে করতে পারেন তবে এটি আপনার মস্তিষ্কের একটি টান এবং আমি বরং সি ++ ব্যবহার করব। (অবশ্যই আমি বরং আরও ভাল ভাষা ব্যবহার করছিলাম, তবে আমি প্লেইন সি এর উপরে হৃদস্পন্দনে একটি সি ++ সংকলক বেছে নেব)
জেসন এস

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

1
আমি ভিন্ন ভিন্ন অনুরোধ।
রকেটম্যাগনেট

3
হ্যাঁ, টেমপ্লেটগুলি নির্ভরযোগ্য এবং উচ্চ কার্যকারিতা কোড উত্পন্ন করার জন্য অত্যন্ত শক্তিশালী উপায়। তথ্যসূত্রগুলি আরও নির্ভরযোগ্য পয়েন্টার। সি ++ সহ আপনি কেবলমাত্র আপনার ব্যবহৃত বৈশিষ্ট্যগুলির জন্য অর্থ প্রদান করেন। আমি মনে করি আপনার আরও C ++ আরও বুঝতে হবে।
রকেটম্যাগনেট

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