সংকলিত কোড আকারের ওভারভিউ


9

আমি যখন আমার কোডটি সংকলন করি, তখন আরডুইনো আইডিই বাইটে বাইনারি স্কেচ আকার দেয়।

কোন ফাংশন বা আমার কোডের কোন অংশটি ফ্ল্যাশটিতে কতটা স্মৃতি গ্রহণ করবে তা সম্পর্কে (প্রায়) সন্ধান করার কোনও ভাল উপায় আছে, যাতে আমি কী অনুভব করি যে বৈশিষ্ট্যটি বেশিরভাগ মূল্যবান ফ্ল্যাশ মেমরি গ্রহণ করে বা যেখানে আমি ফ্ল্যাশ নষ্ট করছি এবং কী করা উচিত অনুকূলকরণ শুরু?

উত্তর:


6

একটি পদ্ধতির প্রোগ্রামের সমাবেশ তালিকা তাকান হয়।

  1. প্রোগ্রামটি সংকলনের পরে (যাচাই বা ডাউনলোড বোতামের মাধ্যমে) ডিরেক্টরিটি সন্ধান করুন যেখানে প্রোগ্রামের জন্য .cpp, .hex, এবং .32 ফাইল সঞ্চিত হয়েছে। (যদি আপনার সেগুলি খুঁজে পেতে সমস্যা হয় তবে সংক্ষিপ্তভাবে আরডুইনো আইডিইতে ভার্বোজ কম্পাইল অপশনগুলি চালু করুন এবং আউটপুটে ডিরেক্টরিগুলির ডিরেক্টরিগুলি দেখুন))

  2. সেই ডিরেক্টরিতে, avr-objdump -S fn.cpp.elf চালান > listing.txtযেখানে fn.cpp.elf হ'ল .inoবন্ধ করা এবং .cpp.elfশেষে যুক্ত হওয়া আপনার স্কেচের নাম । উদাহরণস্বরূপ, স্কেচ সহ serialecho.ino:

    avr-objdump -S serialecho.cpp.elf> list.txt

  3. listing.txtফাইলটি দেখুন এবং প্রতিটি কার্যের সূচনা ঠিকানা হেক্স গণিত ব্যবহার করে তার শেষ ঠিকানা থেকে বিয়োগ করুন। উদাহরণস্বরূপ, setupকোড সহ

    অকার্যকর সেটআপ () {সিরিয়াল.বেগিন (9600); }

তালিকা আমরা দেখতে পাবেন

00000144 <setup>:
...(6 lines snipped)...
 144:   26 e0           ldi     r18, 0x06       ; 6
 146:   40 e8           ldi     r20, 0x80       ; 128
 148:   55 e2           ldi     r21, 0x25       ; 37
 14a:   60 e0           ldi     r22, 0x00       ; 0
 14c:   70 e0           ldi     r23, 0x00       ; 0
 14e:   80 e1           ldi     r24, 0x10       ; 16
 150:   92 e0           ldi     r25, 0x02       ; 2
 152:   db c1           rjmp    .+950           ; 0x50a <_ZN14HardwareSerial5beginEmh>

00000154 <loop>:

0x154–0x144 = 0x10 গণনাটি দেখায় যে এর অংশটি setup16 বাইট দীর্ঘ।

এই উদাহরণগুলি একটি লিনাক্স সিস্টেমে তৈরি করা হয়েছিল। আমি মনে করি কোনও MSWindows সিস্টেমে অ্যাপ্রোচ একই রকম হয় তবে আপনার avr-objdump.exeপরিবর্তে আপনাকে বলার avr-objdumpপ্রয়োজন হতে পারে এবং এর পথটি নির্দিষ্ট করার প্রয়োজন হতে পারে। দেখুন, উদাহরণস্বরূপ, এসেমেলার ফলাফল, কোথায়? ফোরাম.অর্ডুইনো সি সি তে থ্রেড।

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