نمایش نتایج 1 تا 6 از 6

نام تاپیک: سوال درباره Instruction Pointer

  1. #1

    سوال درباره Instruction Pointer

    با سلام...
    من تازه دام با اسمبلی آشنا میشم و سوالی دارم که اگر کسی جوابم رو بده ممنون میشم.

    چرا وقتی دستوری در حال اجراست، همیشه IP دستور بعد رو نگه میداره؟! دلیلش چیه؟

    اگر کسی جواب بده ممنون میشم!

  2. #2

    instruction pointer

    سلام دوست عزیز.
    چون ما همیشه به آدرس دستور بعد نیاز داریم. چون آدرس مکان فعلی رو که داریم و چون در بازگشت از توابع باید از خط بعد از مکانی که تابع صدا زده شده باید دستورات اجرا شوند.

  3. #3
    خوب تو پیشنهادت چیه.
    به نظر من این یه روش ساده و معقول که IP آدرس دستور بعد رو داشته باشه. به این ترتیب ما موقع نوشتن برنامه، میدونیم ترتیب دستورا چی باشه، و cpu هم میدونه که ما میخوایم دستورا به چه ترتیبی اجرا بشن. البته یه چیزی رو بگم اگه اشتباه نکنم وقتی دستورت jump یا call و یا ret باشه دستوری که قرار اجرا بشه دستوری نیست که تو رم بعد از دستور فعلی قرار میگیره، دستور بعدی بر اساس آدرسی که jump یا call جاری ویا call قبلی(در مورد ret) مشخص میکنن مشخص میشه. البته این رو بگم که میتونی cpu رو طوری تنظیم کنی که backward دستورا رو اجرا کنه.

  4. #4
    در ابتدای اجرای هر دستوری مابایددستور را ازحافظه برداشته و به cpu بیاوریم تا ان را اجرا کند پس باید ادرس ان دستور را داشته باشیم و وقتی که دستور فعلی در حال اجراست مسلما ما نیازی به ادرس این دستور نداریم زیرا ما با با استفاده از اذرس دستور ان را اورده ایم والان در حال اجراست وبنا بر اینکه دستورات به صورت ترتیبی اجرا می شوندوبعد از این دستور دستور بعدی انجام میشودبهتر است که ادزس دستور بعدی را ذاشته باشیم تابتوانیم پس از اجرای دستور فعلی دستور بعدی را اورده و ان را اجراکنیم البته این کار را سخت افزار انجام میدهدو در هنگام دستورات callوretهم بسیار مهم است و وقتی ما به جایی پرش میکنیم به طور نرم افزاری IP را عوض میکنیم به شما توصیه میکنم فصل 5 کتاب معماری کامپیوتر نویسنده موریس مانو مترجم سپیدنام را بخوانید تا نحوه اجرای دستورات را در cpu مشاهده کنید

  5. #5
    در ابتدای اجرای هر دستوری مابایددستور را ازحافظه برداشته و به cpu بیاوریم تا ان را اجرا کند پس باید ادرس ان دستور را داشته باشیم و وقتی که دستور فعلی در حال اجراست مسلما ما نیازی به ادرس این دستور نداریم زیرا ما با با استفاده از اذرس دستور ان را اورده ایم والان در حال اجراست وبنا بر اینکه دستورات به صورت ترتیبی اجرا می شوندوبعد از این دستور دستور بعدی انجام میشودبهتر است که ادزس دستور بعدی را ذاشته باشیم تابتوانیم پس از اجرای دستور فعلی دستور بعدی را اورده و ان را اجراکنیم البته این کار را سخت افزار انجام میدهدو در هنگام دستورات callوretهم بسیار مهم است و وقتی ما به جایی پرش میکنیم به طور نرم افزاری IP را عوض میکنیم به شما توصیه میکنم فصل 5 کتاب معماری کامپیوتر نویسنده موریس مانو مترجم سپیدنام را بخوانید تا نحوه اجرای دستورات را در cpu مشاهده کنید

  6. #6
    نقل قول نوشته شده توسط mountainking مشاهده تاپیک
    خوب تو پیشنهادت چیه.
    به نظر من این یه روش ساده و معقول که IP آدرس دستور بعد رو داشته باشه. به این ترتیب ما موقع نوشتن برنامه، میدونیم ترتیب دستورا چی باشه، و cpu هم میدونه که ما میخوایم دستورا به چه ترتیبی اجرا بشن. البته یه چیزی رو بگم اگه اشتباه نکنم وقتی دستورت jump یا call و یا ret باشه دستوری که قرار اجرا بشه دستوری نیست که تو رم بعد از دستور فعلی قرار میگیره، دستور بعدی بر اساس آدرسی که jump یا call جاری ویا call قبلی(در مورد ret) مشخص میکنن مشخص میشه. البته این رو بگم که میتونی cpu رو طوری تنظیم کنی که backward دستورا رو اجرا کنه.
    ایشون درست میگن، دقیقترش اینه:
    وقتی که یه زیر برنامه (Procedure) از نوع Near رو Call میکنی IP به داخل پشته یا همون Stack ، Push میشه، میره سراغ دستورات زیر برنامه (IP میشه آدرس دستورات زیر برنامه) و وقتی به RET رسید یک بایت از سر پشته میخونه و در IP قرار میده که میشه همون چایی که باید از زیر برنامه برگرده. برای Procedure از نوع FAR غیر از IP ، آدرس سگمنت کد هم در پشته Push میشه و وقتی به RETF میرسه 4 بایت از سر پشته بر میداره. برای JMP هم IP برابر جیی میشه که Lable جلوی JMP گفته.

تاپیک های مشابه

  1. x86 Instruction Reference
    نوشته شده توسط Inprise در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 5
    آخرین پست: دوشنبه 15 اسفند 1390, 14:05 عصر
  2. Athlon X2 instruction set
    نوشته شده توسط Delphi Skyline در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 1
    آخرین پست: سه شنبه 20 شهریور 1386, 02:26 صبح
  3. کار با pointer
    نوشته شده توسط FPGAINTEL در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: یک شنبه 07 خرداد 1385, 17:47 عصر
  4. POINTER
    نوشته شده توسط علی باحجب مودتی در بخش VB.NET
    پاسخ: 0
    آخرین پست: چهارشنبه 09 شهریور 1384, 17:30 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •