سلام
یه سری سوال پایه ای در معماری x86 واسم پیش اومده و میخواستم چک کنم ببینم بعضی چیزا رو درست فهمیدم یا نه...
1-برای کار با فضای io فقط دستورات in /out یا get/put استفاده میشه؟
2- نحوه کار memory mapped input outputs به چه صورتی هست؟ یعنی سیستم عامل چجوری به سخت افزار حالی میکنه فلان دیوایس که به فلان پورت وصل شده محلش در حافظه فلان ادرس باشه؟
3-interupt vector table همون محلی هست که ادرس بردار وقفه های نرم افزاری توش ذخیره میشه؟ یعنی وقتی از دستور INT استفاده میشه پردازنده به این محل مراجعه میکنه؟
4-اگه بله برنامه نویس میتونه هر ادرسی رو که میخواد در محل مربوط به هر وکتور بزاره؟
5- وقتی bios اجرا میشه ادرس های روتین های خودش رو در این جدول قرار میده؟
6-IRQ ها مشابه همون اینتراپت های سخت افزاری در میکروکنترلر ها هستن؟
7-هر کدوم از این IRQ ها یه پین جدا روی پروسسور دارن؟ اعمال کردن اینها وظیفه چی هست ؟ ایا south bridge اینا رو اعمال میکنه؟
8- هر کدوم از IRQ ها به طور ثابت مربوط به یک پورت یا دیوایس هستن یا میشه تعیین کرد مثلا فلان دیوایس ها از فلان IRQ استفاده کنن و کلا دستکاریش کرد؟
9- چجوری تعیین میشه وقتی هر IRQ رخ داد پردازنده به کجا مراجعه کنه؟ (و ایا باید در همون فضای اینتراپت وکتور تیبل تعیین بشه؟)
10-وقتی وقفه ای رخ میده پردازنده به طور خودکار قبل اجراش محتویات ریجیستر ها رو ذخیره میکنه؟(اگه اره کجا و چطور تعیین میشه؟)
11-rom بایوس فقط memory mapped هست یا واقعا در اول کار محتویاتش در رم کپی میشه؟(کلا این مپ کردنش یا کپی کردنش وظیفه north bridge هست؟)
12- پردازنده در زمان اجرا به طور خودکار از اولین خونه رم که یه int vector هست شروع میکنه و قبل از شروع پردازنده ادرس روتین های بایوس در این تیبل قرار میگیره یا اینکه پردازنده به طور خودکار از ادرس خاص rom بایوس شروع میکنه؟
13- اگه میشه چند رفرنس در زمینه معماری IBM PC و سخت افزارش و اسمبلی و ... معرفی کنید
با سپاس
یه سری سوال پایه ای در معماری x86 واسم پیش اومده و میخواستم چک کنم ببینم بعضی چیزا رو درست فهمیدم یا نه...
1-برای کار با فضای io فقط دستورات in /out یا get/put استفاده میشه؟
2- نحوه کار memory mapped input outputs به چه صورتی هست؟ یعنی سیستم عامل چجوری به سخت افزار حالی میکنه فلان دیوایس که به فلان پورت وصل شده محلش در حافظه فلان ادرس باشه؟
3-interupt vector table همون محلی هست که ادرس بردار وقفه های نرم افزاری توش ذخیره میشه؟ یعنی وقتی از دستور INT استفاده میشه پردازنده به این محل مراجعه میکنه؟
4-اگه بله برنامه نویس میتونه هر ادرسی رو که میخواد در محل مربوط به هر وکتور بزاره؟
5- وقتی bios اجرا میشه ادرس های روتین های خودش رو در این جدول قرار میده؟
6-IRQ ها مشابه همون اینتراپت های سخت افزاری در میکروکنترلر ها هستن؟
7-هر کدوم از این IRQ ها یه پین جدا روی پروسسور دارن؟ اعمال کردن اینها وظیفه چی هست ؟ ایا south bridge اینا رو اعمال میکنه؟
8- هر کدوم از IRQ ها به طور ثابت مربوط به یک پورت یا دیوایس هستن یا میشه تعیین کرد مثلا فلان دیوایس ها از فلان IRQ استفاده کنن و کلا دستکاریش کرد؟
9- چجوری تعیین میشه وقتی هر IRQ رخ داد پردازنده به کجا مراجعه کنه؟ (و ایا باید در همون فضای اینتراپت وکتور تیبل تعیین بشه؟)
10-وقتی وقفه ای رخ میده پردازنده به طور خودکار قبل اجراش محتویات ریجیستر ها رو ذخیره میکنه؟(اگه اره کجا و چطور تعیین میشه؟)
11-rom بایوس فقط memory mapped هست یا واقعا در اول کار محتویاتش در رم کپی میشه؟(کلا این مپ کردنش یا کپی کردنش وظیفه north bridge هست؟)
12- پردازنده در زمان اجرا به طور خودکار از اولین خونه رم که یه int vector هست شروع میکنه و قبل از شروع پردازنده ادرس روتین های بایوس در این تیبل قرار میگیره یا اینکه پردازنده به طور خودکار از ادرس خاص rom بایوس شروع میکنه؟
13- اگه میشه چند رفرنس در زمینه معماری IBM PC و سخت افزارش و اسمبلی و ... معرفی کنید
با سپاس
دیدگاه