انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: morteza1991 در 12 مهر 1389، 04:51 ب‌ظ

عنوان: نحوه آدرس دهی حافظه چجوریه ؟
ارسال شده توسط: morteza1991 در 12 مهر 1389، 04:51 ب‌ظ
داشتم در مورد آرایه ها می خوندم که رسیدم به این مطلب :
‫به طوركلي اگر هر عنصر از آرايه با نام ‪ ،a‬به اندازه ‪ size‬بايت فـضا اشـغال كنـد، محـل‬
                                           ‫عنصر ‪ i‬ام بهصورت زير محاسبه ميشود:‬
                             ‫‪Loc(i)=base(a)+i*size‬‬
اول فکر کردم اشتباه هست. چون کوچکترین واحد حافظه بیت هست و باید به بیت ها آدرس دهی بشه
ولی تو c امتحان کردم و آدرس دو عنصر پشت سر هم یک آرایه رو بدست آوردم و دیدم که دیدم اختلافشون با هم ۴ واحد هست. و نوع int هم بدست آوردم و دیدم ۴ بایت هست.
حالا موندم که که اگه اینجوری باشه چجوری cpu به بیت ها دسترسی پیدا میکنه و روشون عملیات رو انجام میده.
عنوان: پاسخ به: نحوه آدرس دهی حافظه چجوریه ؟
ارسال شده توسط: heresh در 12 مهر 1389، 08:38 ب‌ظ
منظورت چیه از اینکه میگی چه جوری؟
خب اون چهار بایت از حافظه به cpu فراخوانی میشه و در یک ثبات چهار بیتی ذخیره میشه. بعد بوسیله مدارهایی که تو cpu هست عملیات روشون انجام میشه.
عنوان: پاسخ به: نحوه آدرس دهی حافظه چجوریه ؟
ارسال شده توسط: r_m1232002 در 12 مهر 1389، 09:34 ب‌ظ
اول فکر کردم اشتباه هست. چون کوچکترین واحد حافظه بیت هست و باید به بیت ها آدرس دهی بشه

اگرچه کوچکترین واحد حافظه بیت است ولی برخلاف تصور شما بیت ها در حافظه آدرس پذیر نیستند یعنی کوچکترین واحد آدرس دار در حافظه بایت است. یک بیت به تنهایی برای CPU معنای خواصی ندارد و دستورالعمل های ماشین خیلی طولانی تر از یک بیت هستند (چند بایت با توجه به معماری سیستم ) بنابراین طبیعی است که نیازی به درخواست یک بیت از حافظه نیست و به همین دلیل نیازی هم به آدرس پذیر بودن بیت ها نیست.
اگر کسی در این میان نیاز به داده ای یک بیتی داشته باشد آن CPU نیست بلکه شما به عنوان یک برنامه نویس ممکن است به یک بیت نیاز داشته باشید. در این حالت مجبور هستید یک بایت کامل را از حافظه بگیرید و در یکی از رجیستر ها ذخیره کنید. آن گاه با استفاده از اعمال منطقی (and)  و شیفت ، بیت مورد نظر خود را بدست آورید.
عنوان: پاسخ به: نحوه آدرس دهی حافظه چجوریه ؟
ارسال شده توسط: Pyruzan در 12 مهر 1389، 10:53 ب‌ظ
اگرچه کوچکترین واحد حافظه بیت است ولی برخلاف تصور شما بیت ها در حافظه آدرس پذیر نیستند یعنی کوچکترین واحد آدرس دار در حافظه بایت است. یک بیت به تنهایی برای CPU معنای خواصی ندارد و دستورالعمل های ماشین خیلی طولانی تر از یک بیت هستند (چند بایت با توجه به معماری سیستم ) بنابراین طبیعی است که نیازی به درخواست یک بیت از حافظه نیست و به همین دلیل نیازی هم به آدرس پذیر بودن بیت ها نیست.
اگر کسی در این میان نیاز به داده ای یک بیتی داشته باشد آن CPU نیست بلکه شما به عنوان یک برنامه نویس ممکن است به یک بیت نیاز داشته باشید. در این حالت مجبور هستید یک بایت کامل را از حافظه بگیرید و در یکی از رجیستر ها ذخیره کنید. آن گاه با استفاده از اعمال منطقی (and)  و شیفت ، بیت مورد نظر خود را بدست آورید.
=D>
عنوان: پاسخ به: نحوه آدرس دهی حافظه چجوریه ؟
ارسال شده توسط: morteza1991 در 13 مهر 1389، 11:22 ب‌ظ
اول فکر کردم اشتباه هست. چون کوچکترین واحد حافظه بیت هست و باید به بیت ها آدرس دهی بشه

اگرچه کوچکترین واحد حافظه بیت است ولی برخلاف تصور شما بیت ها در حافظه آدرس پذیر نیستند یعنی کوچکترین واحد آدرس دار در حافظه بایت است. یک بیت به تنهایی برای CPU معنای خواصی ندارد و دستورالعمل های ماشین خیلی طولانی تر از یک بیت هستند (چند بایت با توجه به معماری سیستم ) بنابراین طبیعی است که نیازی به درخواست یک بیت از حافظه نیست و به همین دلیل نیازی هم به آدرس پذیر بودن بیت ها نیست.
اگر کسی در این میان نیاز به داده ای یک بیتی داشته باشد آن CPU نیست بلکه شما به عنوان یک برنامه نویس ممکن است به یک بیت نیاز داشته باشید. در این حالت مجبور هستید یک بایت کامل را از حافظه بگیرید و در یکی از رجیستر ها ذخیره کنید. آن گاه با استفاده از اعمال منطقی (and)  و شیفت ، بیت مورد نظر خود را بدست آورید.

متشکرم.
در مورد آدرس منطقی و آدرس فیزیکی هم توضیحاتی می فرمایید