আমি একটি সি ++ প্রোগ্রামের জন্য সমাবেশ কোডটি কীভাবে দেখতে পারি?
এটি করার জন্য জনপ্রিয় সরঞ্জামগুলি কী কী?
আমি একটি সি ++ প্রোগ্রামের জন্য সমাবেশ কোডটি কীভাবে দেখতে পারি?
এটি করার জন্য জনপ্রিয় সরঞ্জামগুলি কী কী?
উত্তর:
আপনি যদি প্রোগ্রামটি নিজেই তৈরি করছেন, আপনি আপনার সংকলককে সমাবেশ উত্স নির্গমন করতে বলতে পারেন। বেশিরভাগ ইউনিক্স সংকলকগুলির জন্য -S
স্যুইচটি ব্যবহার করুন ।
আপনি যদি জিএনইউ এসেম্ববলার ব্যবহার করে থাকেন তবে -g -Wa,-alh
সংকলনটি স্টিডআউটে আন্তঃসংযোগ উত্স এবং সমাবেশ দেবে ( -Wa
সংকলক ড্রাইভারকে এসেম্বলারের বিকল্পগুলি পাস করতে বলে, -al
সমাবেশ তালিকা চালু করে এবং -ah
"উচ্চ-স্তরের উত্স" তালিকা যুক্ত করে):
g++ -g -c -Wa,-alh foo.cc
ভিজ্যুয়াল স্টুডিওর জন্য, ব্যবহার করুন /FAsc
।
আপনি যদি বাইনারি সংকলন করেন,
objdump -d a.out
ইউনিক্সে ব্যবহার করুন (এছাড়াও সাইগউইনের জন্যও কাজ করে),dumpbin /DISASM foo.exe
উইন্ডোজেডিবাগারগুলি বিচ্ছিন্নভাবে প্রদর্শন করতে পারে।
disas
কমান্ড ব্যবহার করুন ,জিসিসি / জি ++ এ, সংকলন করুন -S
। যে something.s
সমাবেশ কোড সহ একটি ফাইল আউটপুট হবে ।
সম্পাদনা: আপনি যদি আউটপুটটি ইন্টেল সিনট্যাক্সে থাকতে চান (যা আইএমও, আরও বেশি পাঠযোগ্য এবং বেশিরভাগ সমাবেশ টিউটোরিয়াল এটি ব্যবহার করে) দিয়ে সংকলন করুন -masm=intel
।
-fverbose-asm
বিকল্পটি যুক্ত করুন
ভিজ্যুয়াল স্টুডিওতে ;
এই সাইটটি বর্তমানে আমার জন্য কাজ করছে (2017): https://godbolt.org/
প্রচুর লোক ইতিমধ্যে জানিয়েছে কীভাবে প্রদত্ত সংকলক সহ এসেম্বলি কোড নির্গত করতে হয় mit আরেকটি সমাধান একটি বস্তু ফাইল কম্পাইল এবং একটি হাতিয়ার যেমন সঙ্গে এটি ডাম্প হয় objdump , readelf (ইউনিক্স দিকে) অথবা DUMPBIN ( লিংক ) (Windows এ)। আপনি এক্সিকিউটেবলকেও ডাম্প করতে পারেন তবে আউটপুটটি পড়া আরও কঠিন হবে।
যে কোনও সংকলক দিয়ে একইভাবে কাজ করার সুবিধা রয়েছে।
আপনি যেটি ডিবাগার ব্যবহার করছেন তার একটি সমাবেশ দৃশ্য (ভিজ্যুয়াল স্টুডিও, বোরল্যান্ড আইডিই, জিডিবি ইত্যাদি) থাকা উচিত। আপনি যদি কোনও ডিবাগার ব্যবহার না করে থাকেন এবং আপনি কেবল কোনও প্রোগ্রামে অ্যাসেম্বলি কী তা দেখতে চান, আপনি একটি বিচ্ছিন্নকরণকারী বা বিকল্পভাবে ব্যবহার করতে পারেন, প্রোগ্রামটি চালাতে পারেন এবং এটি একটি ডিবাগার দিয়ে সংযুক্ত করে সেখান থেকে ডাম্প করতে পারেন। অপশন সম্পর্কিত তথ্যের জন্য ডিসএসবেবলারগুলির রেফারেন্সগুলি দেখুন ।
অন্য কেউ যেমন উল্লেখ করেছেন, আপনার প্ল্যাটফর্মের ডিবাগারটি একটি ভাল সূচনা পয়েন্ট। সমস্ত ডিবাগার এবং বিযুক্তকারীদের জ্যাকহ্যামারের জন্য, আইডিএ প্রো দেখুন at
ইউনিক্স / লিনাক্স প্ল্যাটফর্মগুলিতে (সাইগউইন সহ) আপনি ব্যবহার করতে পারেন objdump --disassemble <executable>
।
বেশিরভাগ সংকলকের কাছে একটি সমাবেশ তালিকা আউটপুট করার বিকল্প রয়েছে। উদাহরণস্বরূপ ভিজ্যুয়াল স্টুডিও সহ আপনি এমন কিছু ব্যবহার করতে পারেন:
cl.exe /FAfile.asm file.c
যদিও সবচেয়ে ভাল পাঠযোগ্যতার জন্য, বেশিরভাগ ডিবাগারগুলি এমন একটি দৃশ্যের প্রস্তাব দেবে যা মূল উত্সের সাথে বিচ্ছিন্নকরণকে ইন্টারলিয়েভ করে, তাই আপনি আপনার কোডটি সংযোগকারীর আউটপুট লাইনের সাথে লাইন দিয়ে তুলনা করতে পারেন।
পিই এক্সপ্লোরার 32-বিট পিই ফাইলগুলির জন্য ডিসএসমেবলার । অন্যদের জন্য আইডিএ।
আপনি এই সাইটটিও চেষ্টা করতে পারেন: http://assembly.ynh.io/
সেখানে, আপনি আপনার সি বা সি ++ কোড পেস্ট করতে পারেন এবং সমাবেশের সমতুল্য সংস্করণটি দেখতে একটি নীল বোতাম টিপুন।
ভিজ্যুয়াল স্টুডিওতে আপনি সি ++ প্রকল্পের জন্য এসেম্বলারের তালিকা তৈরি করতে পারেন।
প্রকল্পের বৈশিষ্ট্যগুলিতে যান, তারপরে সি ++ / আউটপুট ফাইলগুলিতে যান এবং অ্যাসেমব্লার আউটপুট সেটিংস এবং এএসএম তালিকার অবস্থানটি কোনও ফাইলের নামে সেট করুন।
আপনি যদি একটি Elpipse ব্যবহারকারী হন তবে আপনি ডিসেএসপ্লেউ ভিউটি ব্যবহার করতে পারেন ।
ডিসেস্পেসেবল ভিউ তুলনার জন্য উত্স কোডের সাথে মিশ্রিত নির্দেশাবলীর মতো ভারযুক্ত প্রোগ্রামটি দেখায়। বর্তমানে সম্পাদনকারী রেখাটি একটি তীর চিহ্নিতকারী দ্বারা নির্দেশিত এবং ভিউতে হাইলাইট করা হয়েছে। আপনি ডিসসেসপ্লেউ ভিউতে নিম্নলিখিত কাজগুলি করতে পারেন:
- যে কোনও এসেম্বলারের নির্দেশের শুরুতে ব্রেকপয়েন্টগুলি সেট করুন
- ব্রেকপয়েন্টগুলি সক্ষম করুন এবং অক্ষম করুন এবং তাদের বৈশিষ্ট্যগুলি সেট করুন
- আপনার প্রোগ্রামের অপ্রয়োজনীয় নির্দেশাবলী পদক্ষেপ
- প্রোগ্রামে নির্দিষ্ট নির্দেশাবলী যান
Alt +8