کانال بایت امن
4.52K subscribers
415 photos
49 videos
34 files
586 links
برگزاری دوره های آموزش برنامه نویسی و امنیت نرم افزار.

https://dword.ir
@YMahmoudnia
Download Telegram
#Note #CPL1

یکی از دانشجویان دوره C یک سوال جالب پرسید که قبلا درباره آن توضیح داده بودم، اما اینجا توضیح کامل‌تری را ارائه می‌کنم.

تصویر (سوال) در پست بعدی ارسال خواهد شد.

در برنامه‌های C (اینجا از C مثال می‌زنم چون سوال مربوط به این دوره است) نقطه ورود اصلی به‌ طور پیش‌ فرض تابع main است. البته این تابع می‌تواند به صورت wmain یا tmain هم باشد که برای برنامه‌هایی با پشتیبانی از یونیکد یا ورودی‌ های خاص استفاده می‌شوند.

اما اگر بخواهیم تابع main را کنار بگذاریم و یک تابع دیگر را به عنوان نقطه ورود (Entry Point) برنامه تعریف کنیم، چندین حالت وجود دارد.

قبل از اینکه ادامه بدم، پیشنهاد می‌کنم این ویدیو را ببینید تا با موضوع بیشتر آشنا شوید. بعد از آن، ادامه بحث را با هم جلو می‌بریم.

همان‌ طور که در تصویر هم می‌بینید، از فلگ -nostartfiles استفاده شده است. یکی از کاربردهای این فلگ این است که لینکر نقطه شروع پیش‌فرض (یعنی main) را نادیده بگیرد و به ما اجازه دهد که خودمان نقطه شروع را تعریف کنیم.

تابع _start در این حالت جایگزین main می‌شود. اگر بخواهید دقیق‌ تر بدانید که چه اتفاقی پشت صحنه تابع main رخ می‌دهد پیشنهاد می‌کنم مقاله‌ پشت صحنه اجرای تابع main در C را مطالعه کنید.

کلمه extern هم مشخص است که برای تعریف (دسترسی) یک تابع خارجی استفاده شده و در نهایت تابع _exit اجرا خواهد شد. اگر علاقه دارید، می‌ توانید تحقیق کنید که این تابع چه تفاوتی با exit دارد. ورودی تابع _exit از نوع int است.

در نهایت، کلمه register (storage class specifier) به این منظور استفاده می‌شود که متغیر در رجیسترهای پردازنده ذخیره شود نه در RAM، که این می‌تواند سرعت دسترسی به متغیر را افزایش دهد.

🦅 کانال بایت امن | گروه بایت امن
_
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍2🔥1🤩1