فراخوان های سیستمی (System Calls) در زبان اسمبلی – آموزش Assembly

  • یکشنبه ۱۶ دی ۱۳۹۷
  • بازدید ۲,۹۳۹ نفر

تصویر assembly-system-calls_4596 فراخوان های سیستمی (System Calls) در زبان اسمبلی - آموزش Assembly

فراخوان های سیستمی (System Calls) در زبان اسمبلی

System Calls در اسمبلی API هایی هستند که به منظور برقرار رابطه بین کاربر و هسته استفاده می شوند. ما قبلا از این API ها استفاده کرده ایم (مانند  sys_write و sys_exit).

فراخوان های سیستمی در لینوکس

شما می توانید از فراخوانی های سیستمی لینوکس در برنامه های اسمبلی خود استفاده کنید. برای انجام این کار مراحل زیر را دنبال کنید:

  • شماره System Call را در ثبات EAX قرار دهید.
  • آرگومان های مربوط به System Call را در EBX، ECX و غیره ذخیره کنید.
  • وقفه مربوطه را فراخوانی کنید (80h).
  • نتیجه معمولا در ثبت نام EAX ثبت می شود.

به طور کلی 6 ثبات وجود دارد که آرگومان های مورد استفاده توسط System Call را ذخیره می کند. این ثبات ها عبارت اند از: EBX، ECX، EDX، ESI، EDI و EBP.

مثال زیر  نحوه استفاده از فراخوان سیستمی sys_exit در اسمبلی را نشان می دهد:

مثال زیر  نحوه استفاده از فراخوان سیستمی sys_write در اسمبلی را نشان می دهد:

در جدول زیر برخی از System Call های مورد استفاده در این آموزش را مشاهده می کنید:

%eaxName%ebx%ecx%edx%esx%edi
1sys_exitint
2sys_forkstruct pt_regs
3sys_readunsigned intchar *size_t
4sys_writeunsigned intconst char *size_t
5sys_openconst char *intint
6sys_closeunsigned int

مثال

مثال زیر یک عدد از ورودی خوانده و آن را نمایش می دهد:

امتحان کنید

زمانی که کد بالا توسط کامپایلر اسمبلی و اجرا شود، نتیجه زیر را تولید خواهد کرد:

ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است