بررسی چگونگی اجرای تابع Main توسط میکروکنترلر ARM

با سلام
میکروکنترلر آرم از کجا می داند که ابتدا باید تابع main را اجرا کند؟

سلام دوست عزیز، در واقع این کامپایلر هست که این رو میدونه. میکرو کنترلر فقط زبان ماشین و دستورات ماشین رو میفهمه. وقتی که شما به زبان C، C++ و یا به هر زبان دیگری در یک محیط نرم افزاری کد میزنید، وقتی که کامپایل انجام میشه، اون نرم افزار کامپایلر، کد های شما رو تبدیل میکنه به کدهای ماشین که از بالا به پایین اجرا میشن و خود کامپایلر کدهای تابع main رو بالای برنامه میذاره.

ممنون از پاسخگویی شما.
آیا اسم رجیسترهایی که برای این کار اختصاص داده شده اند را می دانید؟ کامپایلر چه رجیسترهایی را از میکرو کنترلر تنظیم می کند؟ این سوال را میپرسم چون در یک مصاحبه کاری با یک شرکت خارجی این سوال از من شد. و من نمی دانستم و نمی دانم.
با تشکر از شما

میکروکنترلر به میکروکنترلر متفاوت هست ولی همه پروسسور ها یک فایل user manual خیلی مفصل دارن که تمام جزییات داخل اون ذکر شده.
علاوه بر اون، کد ها داخل حافظه فلش ذخیره میشن و شما میتونید از این حافظه برای نگه داری داده های غیر از کد هم استفاده کنید. داخل تنظیمات کامپایلر، میتونید دقیقا مشخص کنید که کد از کدام شماره حافظه شروع میشه و تا کجا ادامه داره. در برخی موارد هم چیزی به اسم boot loader رو در ابتدای برنامه قرار میدن که کدی هست که قبل از اجرای برنامه اصلی اجرا میشه.

به طور کلی این رجیستر ها خیلی مهم هستن:
Reset Vector
MSP (Main Stack Pointer)
PC (Program Counter)
LR (Link Register)