INT (دستور X86)

از ویکی‌پدیا، دانشنامهٔ آزاد
(تغییرمسیر از INT (دستور 86x))

INT دستورالعمل زبان مونتاژ برای پردازندههای x86 است که باعث وقفه نرم افزاری می‌شود و شماره وقفه را به فرمت بایت دریافت می‌کند. [۱]

وقتی که در زبان اسمبلی نوشته می‌شود، دستورالعمل اینگونه است:

INT X

که X وقفه نرم افزاری است که باید تولید شود (در بازه 0-255).

بسته به متن، کامپایلر یا مونتاژ کننده ، شماره وقفه نرم افزاری اغلب به صورت یک مقدار ۱۶بیتی داده می شود، گاهی اوقات با پیشوند 0x یا پسوند h . به عنوان مثال، INT 21H یک وقفه نرم افزاری را ایجاد می کند (33 در دهدهی)، و باعث می شود که تابعی که توسط بردار 34ام جدول وقفه به آن اشاره می‌کند اجرا شود که معمولا یک فراخوانی API DOS است.

حالت واقعی[ویرایش]

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

یکی از مفیدترین وقفه های نرم افزار DOS، وقفه 0x21 بود. با فراخوانی آن با پارامترهای مختلف در رجیستر (عمدتا ah و al) میتوان به عملیات‌ مختلف IO، خروجی رشته و بیشتر دسترسی داشته باشید. [۲]

اکثر سیستم ها و مشتقات Unix از وقفه های نرم افزاری استفاده نمی کنند، به استثنای وقفه 0x80 که برای برقراری تماس سیستم استفاده میشود . این کار با وارد کردن یک مقدار 32 بیتی مربوط به یک تابع کرنل به رجیستر EAX پردازنده و سپس اجرای INT 0x80 انجام می شود.

INT 3[ویرایش]

دستور INT 3 برای استفاده توسط اشکال‌یاب‌ها تعریف شده است تا به طور موقت جایگزین دستورالعمل در یک برنامه در حال اجرا برای ایجاد یک نقطه پایانی باشد. دستورالعمل‌های INT دیگر با استفاده از دو بایت کد گذاری می شوند. این کار آنها را برای استفاده در دستورالعمل های پچ (که می تواند یک بایت طولانی باشد) نامناسب ساخته است. (ببینید SIGTRAP)

کد اجرایی برای 0xCC INT 3است، در مقایسه با کد 0xCD imm8 برای INT فوری. از انجایی که کد اجرایی 0xCC دارای ویژگی‌های خاص مورد نظر برای اشکال‌یابی است که کد‌های اجرایی معمول دو بایتی INT 3 فاقد آن هستند، اسمبلرها به طور معمول کد 0xCD 0x03 از mnemonics تولید نمی کنند. [۳]

همچنین نگاه کنید[ویرایش]

منابع[ویرایش]

  1. "Intel Architecture Software Developer's Manual, Volume 2: Instruction Set Reference Manual". Archived from the original on 2 July 2007. Retrieved 2007-07-13.
  2. Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes: 1, 2A, 2B, 2C, 3A, 3B, and 3C (PDF) (PDF). Intel. June 2013 [1997]. 325462-047US. Retrieved 2013-07-02.