সরাসরি সি বা অ্যাসেমব্লিতে ডিএসপি অ্যালগরিদম লিখছেন? [বন্ধ]


18

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

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

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


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

1
@ জোঁক আশা করছেন আপনি এইটির একটি উত্তর লিখতে চলেছেন - আমি কেবল একটি হার্ড ডিএসপি ব্ল্যাকফিন প্রকল্প করেছি, তবে কিছু পারফরম্যান্স হ্যাক করার প্রয়োজনের স্মৃতি আমার আছে :)
পেরিসিথিয়েন্সে

6
@ পিরিসেন্টিওন নো, যদি না ওপি নির্দিষ্ট ডিএসপি এবং প্রকল্পের লক্ষ্যগুলি নিয়ে অনেক বেশি কথা না বলে আমি এর উত্তর লিখতে ভাবতে পারি না। অন্যথায়, এটি অস্পষ্ট, নিরপেক্ষ মতামত হবে যা ওপি তার সম্পর্কে যা লিখেছিল তার উপর নির্ভর করে খুব সঠিক বা খুব ভুল হতে পারে। সুতরাং আমি শুধু অপেক্ষা করব।
জনক

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

2
আমি ডিএসপি সম্পর্কে নিশ্চিত নই তবে বেশিরভাগ মাইক্রোপ্রসেসরের ক্ষেত্রে আপনি ইন্টার্নিকগুলি ব্যবহার করতে পারেন যা লেখক এসেম্বলার এবং সি কোডের মাঝামাঝি।
ম্যাকিয়েজ পাইচোটকা

উত্তর:


20

আপনার অ্যালগরিদম উচ্চ স্তরের ভাষায় (যা সি এর সাথে তুলনা করা হয়) প্রয়োগ করা সর্বদা ভাল, এমনকি যদি আপনি শেষ পর্যন্ত সমাবেশে সমস্ত কিছু বাস্তবায়নের পরিকল্পনা করেন তবে।

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

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

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

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


23

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

অন্যান্য বিকল্পের মধ্যে রয়েছে:

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

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

21

অকালীন অপটিমাইজেশন হ'ল সমস্ত অশুভের মূল। - ডোনাল্ড নুথ

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

আমার প্রশ্ন হ'ল আমি যদি কেবল সি তে প্রোগ্রাম করি, সংকলকটি (যা ডিএসপি চিপ সংস্থা থেকে আসে) কী সেই ডিএসপিটির জন্য এটি অনুকূলিত করে না এবং এর ক্ষমতাগুলি ব্যবহার করে?

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

বা সত্যিই কি সরাসরি সমাবেশে ডিএসপি রুটিনগুলি লিখতে হবে?

প্রথমে সি লিখুন, তারপরে প্রোফাইল, তারপরে সিদ্ধান্ত নিন আপনার সমাবেশে লেখার দরকার আছে কিনা। আশা করি, আপনার সমাবেশের দরকার পড়বে না।


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

11
আপনার সমাপ্তি বিবৃতি ভাল সাধারণ পরামর্শ। AD DSP ALUs এর সুনির্দিষ্ট বিবরণ বিবেচনা করার সময় এটি ফ্যাকাশে ধরনের। আমি মনে করি না আপনি এগুলি কখনও পরীক্ষা করেছেন।
জনক

18

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

আপনি সি তে আপনার পুরো অ্যাপ্লিকেশনটি কোড করবেন, এসেম্বলারের মধ্যে অতিরিক্ত, প্রয়োজনীয় স্টাফ, টেস্ট ইনজেকশন এবং দৃশ্যমানতা, গৃহকর্মী ইত্যাদিতে সমস্ত লিখতে অনুপযুক্ত the টেস্ট ফিল্টারটির সি সংস্করণ লিখুন। আপনি আসলে এই জন্তুটির জন্য এসেমব্লার লিখতে পারবেন তা যাচাই করতে একই ফিল্টারটির একটি সংঠক সংস্করণ লিখুন।

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

কোনও ডিএসপি, সরঞ্জাম চেইনে প্রতিশ্রুতিবদ্ধ হওয়ার আগে আপনি এই সমস্ত কাজটি করেছেন।

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


7

যদিও আমি ইতিমধ্যে এই প্রশ্নের উত্তর দিয়েছি, আমি অন্য দৃষ্টিকোণটি ব্যাখ্যা করার জন্য আরও একটি উত্তর যুক্ত করব:

সি তে লিখুন, সমাবেশে পড়ুন!

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

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

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

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


আমার এই সম্পর্কে একটি প্রশ্ন আছে: আমি এসটিএম 32 এফ 4 কর্টেক্স-এম 4 প্রসেসরের উপর কাজ করি এবং আমি সিএমএসআইএস / কিউব লাইব্রেরি ব্যবহার করি। আমি সংকলকটির -O3 পতাকাটিও ব্যবহার করি কারণ এটি যে কোনও উত্পাদন করতে পারে তার চেয়ে দক্ষতার জন্য উপায় প্রমাণিত। সমস্যাটি হ'ল সংকলিত সমাবেশটি যথাযথ বিশ্লেষণের জন্য সর্বদা বিশৃঙ্খলাযুক্ত। আপনি কি সবসময় সংকলক অপ্টিমাইজেশন ছাড়াই সংকলন করেন? বা আপনি যদি সমাবেশের আগের দিনটিকে অল্প পরিমাণে পরিচালনা করতে চান তবে এটি পুরো জায়গা জুড়ে?
ফ্লোরেন্ট

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

4

সাধারণভাবে, এসেম্বলারের উত্সগুলি লেখার প্রয়োজন নেই যদি:

  • আপনি সমালোচনামূলক বিভাগগুলিতে সিটিকে অনুকূলিত করেছেন: "রেজিস্টার" কীওয়ার্ড, ইনলাইন ফাংশন, ...
  • এসএম ব্লক ব্যবহার করে সি প্রোগ্রামের কিছু ফাংশন হতে পারে

এর অর্থ সি সংকলক দ্বারা উত্পাদিত এসেমব্লার নিজে নিজে পর্যালোচনা করুন (সমালোচনামূলক অংশগুলির জন্য) এবং পর্যাপ্ত অপ্টিমাইজেশনের পর্যায়ে অবধি উত্সটি সংশোধন করুন।


কার্যত সমস্ত আধুনিক সংকলক প্ল্যাটফর্ম নির্বিশেষে "নিবন্ধক" কীওয়ার্ডটিকে উপেক্ষা করে। এটি ব্যবহার করে আরও ভাল কোডের ফলাফল হওয়ার খুব কমই সম্ভাবনা।
কেফ শ্যাটার 4

: @KefSchecter: না তারা শুধুমাত্র একাউন্টে রেজিস্টার ইঙ্গিতটি নিতে, আজকাল তারা রেজিস্টার নির্বাচন করতে ব্যবহার করা সম্ভব হবে gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/...
pasaba Por Aqui

1
@ কেফশেচার: এম্বেড থাকা ডিভাইসের জন্য রচনা করা সংকলক ব্যতীত, যেখানে আপনি খালি ধাতুতে প্রোগ্রামিং করা হয় এটি একটি অত্যন্ত গুরুত্বপূর্ণ কীওয়ার্ড।
বনাম

@ পাসবাপোরাকুই: আমি সিনট্যাক্সের সেই বিটটি ভুলে গেছি। তবে আপনি যদি কোনও নিবন্ধের নাম নির্দিষ্ট না করেন - অন্য কথায়, আপনি যদি এটি আইএসও স্ট্যান্ডার্ড পদ্ধতিতে ব্যবহার করেন - আমি বাজি দেব যে জিসিসি এটিকে উপেক্ষা করবে।
কেফ শেকটার 18

3

আমি এখানে বলব যে আপনি যদি এফআইআর / আইআইআর ফিল্টার করেন তবে আপনি কোন ভাষাটি ব্যবহার করেন (সি বনাম অ্যাসেম্বলি) এর চেয়ে আপনি কোন অ্যালগরিদম বনাম দ্রুত ফুরিয়ার ট্রান্সফর্ম (এফএফটি) ব্যবহার করেন তা অনেক বেশি গুরুত্বপূর্ণ।

আমি কি সমাবেশে এফএফটি লিখব? সম্ভবত না.

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

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


2

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

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

সি ঠিক আছে আমি অনুমান করি। তবে আপনি যদি সত্যিই জানেন যে আপনি নিজের মেশিনটি হার্ডওয়্যার স্তরে কী করতে চান তবে এসেম্বলারের দিকে যান।

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