گراف روند کنترلی

یک گراف روند کنترل (CFG) در علوم کامپیوتر، یک نمایش با استفاده از نشان‌گذاری گراف از تمام مسیرهای ممکن است که می‌تواند توسط یک برنامه در زمان اجرای آن پیمایش شود.

گراف‌های جریان کنترل ساده شده

معرفی

ویرایش

در یک گراف کنترل جریان هر گره در گراف یک بلوک پایه را نشان می‌دهد، یعنی یک قسمت سرراست کد بدون هرگونه پرش یا اهداف پرش؛ اهداف پرش یک بلوک را شروع کرده و به انتهای بلوک پرش می‌کنند. یالهای جهت دار برای نمایش پرش‌ها در کنترل جریان استفاده می‌شوند. در بیشتر ارایه‌ها دو بلوک با طراحی خاص وجود دارند: بلوک ورودی، که از طریق آن ورود به گراف جریان کنترل می‌شود، و بلوک خروجی که تمام کنترل جریان‌ها از طریق آن رها می‌شوند.[۱]

CFG برای بسیاری از ابزارهای بهینه‌سازی‌های کامپایلر و تحلیل ایستا ضروری است.

مثال زیر را در نظر بگیرید

0: (A) t0 = read_num
1: (A) if t0 mod ۲ == ۰
2: (B) print t0 + " is even."
3: (B) goto ۵
4: (C) print t0 + " is odd."
5: (D) end program

در بالا، ۴ بلوک پایه داریم: الف از ۰ به ۱، ب از ۲ به ۳، ج در ۴ و د در ۵. به صورت خاص در این حالت، الف "بلوک ورودی"، د "بلوک خروجی" و خطوط ۴ و ۵ اهداف برش هستند. یک گراف برای این قطعه دارای یال‌هایی از الف به ب، الف به ج، ب به د و ج به د است.

منابع

ویرایش
  1. Yousefi, Javad (2015). Masking wrong-successor Control Flow Errors employing data redundancy. IEEE. pp. 201–205. doi:10.1109/ICCKE.2015.7365827.