সমাবেশ শেখার বাইরে, আমি বিশ্বাস করি যে সি এর মতো নিম্ন স্তরের ভাষা কীভাবে সংকলিত হয় তা শেখা অত্যন্ত মূল্যবান। সুতরাং আমার উত্তর হ্যাঁ, তবে আবার আমি সম্ভবত পক্ষপাতদুষ্ট কারণ আমি নিম্ন-স্তরের প্রোগ্রামিং উপভোগ করি।
উদাহরণস্বরূপ, কীভাবে সহজ বিবৃতি সংকলন করা হয়েছে তা কেবল বুঝতে understanding নিম্নলিখিত ফাংশন,
int func(int val)
{
int num = val * 5;
return num;
}
... হয়ে যায় (কমপক্ষে আকর্ষণীয় কিছুটা):
movl %edi, -20(%rbp)
movl -20(%rbp), %edx
movl %edx, %eax
sall $2, %eax
addl %edx, %eax
এই কোডটি স্ট্যাক থেকে আর্গুমেন্ট গ্রহণ করে (ভাল, প্যারামিটারটিকে ফানকে), এটিকে বাম 2 স্থান স্থানান্তরিত করে (2 ^ 2 বা 4 দিয়ে গুণ করে) এবং তারপরে ফলাফলটিতে মূল মান যুক্ত করে। শেষ ফলাফলটি 5 দ্বারা একটি গুণ is এর মতো একটি উদাহরণ সচেতন হওয়ার জন্য অনেকগুলি বিষয় চিত্রিত করে, যেমন সংকলক অপ্টিমাইজেশন। কোনও নির্দেশকে সরাসরি 5 দ্বারা গুণানোর পরিবর্তে এটি দুটি স্থানকে 4 দিয়ে গুণ করে এবং তারপরে মূল মান যুক্ত করে। নিম্ন স্তরের জিনিসগুলি সম্পর্কে আমার বোঝাপড়াটি আরও উন্নত করতে আমি এর মতো উদাহরণ পেয়েছি।
-S
বিকল্পটি সহ জিসিসি থেকে এসেম্বলারের আউটপুট উত্পন্ন করুন । তবে, সচেতন থাকুন যে ফলাফলগুলি সংকলক এবং অপ্টিমাইজেশন স্তর দ্বারা পৃথক হবে।
যাইহোক, আমি মনে করি না যে সংসদীয় ভাষা প্রোগ্রামার হওয়া অ্যাসেমবিলি বোঝার সমান । আবার, আমি অনুভব করি যে সি এর মতো ভাষায় প্রোগ্রামিং করা এবং এটি কীভাবে মেশিন কোডে প্রবেশ করবে তা জেনে রাখা একটি মূল্যবান অনুশীলন।