PDA

View Full Version : نحوه ذخیره سازی اسامی متغییرها به همراه مقادیرشان



fazel-d
چهارشنبه 03 آذر 1389, 13:34 عصر
همان طوری که میدانیم، مقادیری را که به متغییرها نسبت می دهیم، کامپایلر آنها را در خانه هایی از حافظه قرار می دهد. و از طرفی نیز اسامی متغییرها نیز به صورت کد اسکی شان در حافظه قرار می گیرند. درسته؟!!!
مثلا:

int abc=12;
که aدر یک خانه از حافظه ، b در خانه دیگر و همین طور برای c و 12
اما یه سوال
ارتباط بین نام و مقدار متغییر در حافظه چگونه برقرار می شود؟ اگر می شه به صورت شماتیک نشان دهید که چگونه در خانه هایی از حافظه ذخیره می شوند و با مراجعه به abc می توان به مقدارش دسترسی پیدا کرد.
(بحث بر روی ذخیره سازی در حافظه است)

tdkhakpur
چهارشنبه 03 آذر 1389, 22:05 عصر
و از طرفی نیز اسامی متغییرها نیز به صورت کد اسکی شان در حافظه قرار می گیرند. درسته؟!!!


نه!

ارتباط بین نام و مقدار متغییر در حافظه چگونه برقرار می شود؟ اگر می شه به صورت شماتیک نشان دهید که چگونه در خانه هایی از حافظه ذخیره می شوند و با مراجعه به abc می توان به مقدارش دسترسی پیدا کرد.

اگر منظورتان این هست که داخل برنامه هایی که از کامپوننتهای ویژال استفاده کرده و میتوانبد از طریق اسامی به محل حافظه آنها دسترسی داشته باشید این به ساختار این نوع کد و برنامه نویسی ارتباط دارد ولی اگر در حالت عادی برنامه مینوسید که هیچ راهی برای دسترسی به اسامی ندارد امکان پیدا کردن محل حافظه وجود نخواهد داشت.
توضیحا اینکه لینکر هیچ تعهدی در اسامی برای برنامه نویس و یا هیچ رد پایی از اسامی در هنگام تولید کد باینری به جای نمیزاره فقط آدرس محل نشان میده که داده ها باید از کدوم محل دریافت و یا به کدوم محل انتقال داده بشه.

fazel-d
سه شنبه 16 آذر 1389, 11:40 صبح
ارتباط بین نام و مقدار متغییر در حافظه چگونه برقرار می شود؟ اگر می شه به صورت شماتیک نشان دهید که چگونه در خانه هایی از حافظه ذخیره می شوند و با مراجعه به abc می توان به مقدارش دسترسی پیدا کرد. اگر منظورتان این هست که داخل برنامه هایی که از کامپوننتهای ویژال استفاده کرده و میتوانبد از طریق اسامی به محل حافظه آنها دسترسی داشته باشید این به ساختار این نوع کد و برنامه نویسی ارتباط دارد ولی اگر در حالت عادی برنامه مینوسید که هیچ راهی برای دسترسی به اسامی ندارد امکان پیدا کردن محل حافظه وجود نخواهد داشت.
توضیحا اینکه لینکر هیچ تعهدی در اسامی برای برنامه نویس و یا هیچ رد پایی از اسامی در هنگام تولید کد باینری به جای نمیزاره فقط آدرس محل نشان میده که داده ها باید از کدوم محل دریافت و یا به کدوم محل انتقال داده بشه.

ببینید سوال من به سمت معماری و ساختار کامپیوتر و در نهایت به اشارگرها بر می گرده ( هر چند مفهوم اشاره گرها برام روشن هست).!! یعنی زمانی که من در برنامه ام یه متغییر به صورت int a=20 تعریف می کنم و حالا می خوام بدونم که این متغییر a و مقدار 20 چگونه در حافظه قرار می گیرند و چگونه بین اسامی متغییر ها و مقدارشون ارتباط برقرار می شه؟