অ্যাসেমব্লিতে লেখা আপনার গতির যাদু বৃদ্ধি দেয় না কারণ বিশদ পরিমাণ (নিবন্ধকরণ বরাদ্দ ইত্যাদি) কারণে আপনি সম্ভবত সবচেয়ে তুচ্ছ অ্যালগরিদম লিখবেন।
আধুনিক হিসাবে (পড়ুন - 70-80 এর পরে ডিজাইন করা) প্রসেসর সমাবেশ আপনাকে কী চলছে তা জানার জন্য পর্যাপ্ত পরিমাণের বিবরণ দেবে না (এটি - বেশিরভাগ প্রসেসরের উপর)। আধুনিক পি ইউ (সিপিইউ এবং জিপিইউ) নির্ধারিত নির্দেশাবলী যতটা জটিল। অ্যাসেমব্লিকের মূল বিষয়গুলি (বা সিউডোঅ্যাস্পাবলিজ) জানার ফলে কম্পিউটার আর্কিটেকচার বই / কোর্সগুলি বুঝতে সক্ষম হবে যা আরও জ্ঞান সরবরাহ করতে পারে (ক্যাশে, আউট-অফ-অর্ডার এক্সিকিউশন, এমএমইউ ইত্যাদি)। এগুলি বোঝার জন্য সাধারণত আপনার জটিল ISA জানতে হবে না (এমআইপিএস 5 বেশ জনপ্রিয় আইআইআরসি)।
প্রসেসর কেন বুঝবেন? এটি আপনাকে কী হতে চলেছে তা আরও অনেক বেশি বোঝার সুযোগ দিতে পারে। ধরা যাক আপনি ম্যাট্রিক্স গুণকে নিরীহ উপায়ে লিখুন:
for i from 0 to N
for j from 0 to N
for k from 0 to N
A[i][j] += B[i][k] + C[k][j]
এটি আপনার উদ্দেশ্যটির জন্য 'যথেষ্ট ভাল' হতে পারে (যদি এটি 4x4 ম্যাট্রিক্স হয় তবে এটি ভেক্টর নির্দেশাবলীতে কোনওভাবেই সংকলিত হতে পারে)। তবে আপনি যখন বড় অ্যারেগুলি সংকলন করেন তখন বেশ গুরুত্বপূর্ণ প্রোগ্রাম রয়েছে - সেগুলি কীভাবে অনুকূলিত করা যায়? আপনি যদি সমাবেশে কোডটি লিখেন তবে আপনার কিছু% উন্নতি হতে পারে (যদি না আপনি বেশিরভাগ লোকের মতো করেন - তবে নিরীহ উপায়েও, নিবন্ধগুলিকে কমিয়ে দেওয়া, ক্রমাগত স্মৃতিতে লোড করা / সংরক্ষণ করা এবং ফলস্বরূপ আস্তে আস্তে প্রোগ্রামটি এইচএল ভাষায়) ।
তবে আপনি কিছু লাইন উল্টাতে পারেন এবং যাদুতে কার্য সম্পাদন করতে পারেন (কেন? কেন আমি এটিকে 'হোম ওয়ার্ক' হিসাবে রেখেছি) - আইআইআরসি বড় ম্যাট্রিকের জন্য বিভিন্ন কারণের উপর নির্ভর করে এটি এমনকি 10x হতে পারে।
for i from 0 to N
for k from 0 to N
for j from 0 to N
A[i][j] += B[i][k] + C[k][j]
এটি বলেছিল - কম্পাইলাররা এটি করতে সক্ষম হয়ে কাজ করছে ( জিসিসির জন্য গ্রাফাইট এবং এলএলভিএম ব্যবহার করে যে কোনও কিছুতে পলি )। এমনকি তারা এটিকে রূপান্তর করতেও সক্ষম (দুঃখিত - আমি স্মৃতি থেকে ব্লক লিখছি):
for i from 0 to N
for K from 0 to N/n
for J from 0 to N/n
for kk from 0 to n
for jj from 0 to n
k = K*n + kk
j = J*n + jj
A[i][j] += B[i][k] + C[k][j]
সংক্ষিপ্তসার হিসাবে - কোনও অ্যাসেমব্লির বেসিকগুলি জানার ফলে আপনি প্রসেসরের ডিজাইন থেকে বিভিন্ন 'বিশদ' খনন করতে পারবেন যা আপনাকে দ্রুত প্রোগ্রাম লেখার অনুমতি দেয়। RISC / CISC বা VLIW / ভেক্টর প্রসেসর / সিমডি / ... আর্কিটেকচারের মধ্যে পার্থক্য জানা ভাল হতে পারে know তবে আমি x86 দিয়ে শুরু করব না কারণ এগুলি বেশ জটিল হতে পারে (সম্ভবত এআরএমও খুব বেশি) - একটি রেজিস্টার কী তা জেনে রাখা ইত্যাদি আইএমএইচও শুরু করার পক্ষে যথেষ্ট।