| GPROF(1) | GNU | GPROF(1) |
نام (NAME)
gprof - نمایش دادههای پروفایل گراف فراخوانی
خلاصه دستور (SYNOPSIS)
gprof [ -[abcDhilLrsTvwxyz] ] [
-[ABCeEfFJnNOpPqQRStZ][name] ]
[ -I dirs ] [ -d[num] ] [ -k from/to ]
[ -m min-count ] [ -R map_file ] [ -t table-length ]
[ --[no-]annotated-source[=name] ]
[ --[no-]exec-counts[=name] ]
[ --[no-]flat-profile[=name] ] [ --[no-]graph[=name] ]
[ --[no-]time=name] [ --all-lines ] [ --brief ]
[ --debug[=level] ] [ --function-ordering ]
[ --file-ordering map_file ] [ --directory-path=dirs ]
[ --display-unused-functions ] [ --file-format=name ]
[ --file-info ] [ --help ] [ --line ] [ --inline-file-names ]
[ --min-count=n ] [ --no-static ] [ --print-path ]
[ --separate-files ] [ --static-call-graph ] [ --sum ]
[ --table-length=len ] [ --traditional ] [ --version ]
[ --width=n ] [ --ignore-non-functions ]
[ --demangle[=STYLE] ] [ --no-demangle ]
[--external-symbol-table=name]
[ image-file ] [ profile-file ... ].SH
"توضیحات
(DESCRIPTION)" دستور
"gprof" یک
نمایه
(پروفایل)
اجرایی از
برنامههای
C، Pascal یا Fortran77
تولید
میکند. اثر
روتینهای
فراخوانیشده
در پروفایل
هر
فراخواننده
گنجانده
میشود.
دادههای
پروفایل از
فایل
پروفایل
گراف
فراخوانی
(gmon.out بهصورت
پیشفرض)
گرفته
میشود که
توسط
برنامههای
کامپایلشده
با گزینهٔ -pg
در "cc"،
"pc" و
"f77"
ایجاد
میگردد.
گزینهٔ -pg
همچنین
نسخههایی
از
روتینهای
کتابخانهای
را پیوند
میدهد که
برای
پروفایلگیری
کامپایل
شدهاند.
دستور
"gprof" فایل
شیء
دادهشده
(پیشفرض
"a.out") را
میخواند و
رابطه بین
جدول
نمادهای آن
و پروفایل
گراف
فراخوانی
حاصل از gmon.out
را برقرار
میسازد.
اگر بیش از
یک فایل
پروفایل
مشخص شده
باشد،
خروجی
"gprof"
مجموع
اطلاعات
پروفایل
موجود در
فایلهای
ارائهشده
را نمایش
میدهد.
دستور "gprof" مقدار زمان سپریشده در هر روتین را محاسبه میکند. سپس این زمانها در امتداد یالهای گراف فراخوانی منتشر میشوند. چرخهها شناسایی شده و فراخوانیهای درون یک چرخه به گونهای تنظیم میشوند که در زمان آن چرخه سهیم باشند.
چندین ساختار خروجی از این تحلیل در دسترس است.
پروفایل تخت (flat profile) نشان میدهد که برنامهٔ شما چه مقدار زمان در هر تابع صرف کرده و آن تابع چند بار فراخوانی شده است. اگر فقط میخواهید بدانید کدام توابع بیشترین چرخهها را مصرف میکنند، در اینجا بهطور خلاصه بیان شده است.
گراف فراخوانی (call graph) برای هر تابع نشان میدهد چه توابعی آن را فراخوانی کردهاند، آن تابع چه توابع دیگری را فراخوانی کرده و هرکدام چند بار فراخوانی شدهاند. همچنین تخمینی از میزان زمان سپریشده در زیرروالهای هر تابع ارائه میدهد. این گزارش میتواند نقاطی را پیشنهاد کند که شاید بتوانید با حذف فراخوانیهای زمانبر، عملکرد را بهبود بخشید.
فهرست کد منبع حاشیهنویسیشده (annotated source) رونوشتی از کد منبع برنامه است که با تعداد دفعات اجرای هر خط از برنامه برچسبگذاری شده است.
گزینهها (OPTIONS)
این گزینهها مشخص میکنند که "gprof" باید کدامیک از چندین قالب خروجی را تولید کند.
بسیاری از این گزینهها یک symspec اختیاری دریافت میکنند تا توابع موردنظر برای گنجاندن یا مستثنی کردن را مشخص کنند. این گزینهها را میتوان چندین بار با symspecهای مختلف مشخص کرد تا مجموعههایی از نمادها را در بر گرفت یا حذف کرد.
مشخص کردن هر یک از این گزینهها حالت پیشفرض (-p -q) را بازنویسی میکند؛ پیشفرضی که یک پروفایل تخت و تحلیل گراف فراخوانی را برای تمام توابع چاپ میکند.
- "-A[symspec]"
- "--annotated-source[=symspec]"
- گزینهٔ -A باعث میشود "gprof" کد منبع حاشیهنویسیشده را چاپ کند. اگر symspec مشخص شده باشد، خروجی تنها برای نمادهای منطبق چاپ میشود.
- "-b"
- "--brief"
- اگر گزینهٔ -b داده شود، "gprof" توضیحات مفصل و اضافی که معنای فیلدهای جداول را تشریح میکنند چاپ نمیکند. این گزینه زمانی که قصد دارید خروجی را چاپ کنید یا از دیدن توضیحات تکراری خسته شدهاید مفید است.
- "-B"
- گزینهٔ -B باعث میشود "gprof" تحلیل گراف فراخوانی را چاپ کند.
- "-C[symspec]"
- "--exec-counts[=symspec]"
- گزینهٔ -C
باعث
میشود
"gprof"
شمارش
توابع و
تعداد
دفعات
فراخوانی
هر یک را
چاپ کند.
اگر symspec مشخص
شده باشد،
شمارش تنها
برای
نمادهای
منطبق چاپ
میشود.
اگر فایل دادههای پروفایل شامل رکوردهای شمارش بلوک پایه (basic-block) باشد، مشخص کردن گزینهٔ -l همراه با -C باعث شمارش و نمایش تعداد اجرای بلوکهای پایه خواهد شد.
- "-i"
- "--file-info"
- گزینهٔ -i باعث میشود "gprof" اطلاعات خلاصهای دربارهٔ فایل(های) دادههای پروفایل نمایش داده و سپس خارج شود. تعداد رکوردهای هیستوگرام، گراف فراخوانی و شمارش بلوکهای پایه نمایش داده میشود.
- "-I dirs"
- "--directory-path=dirs"
- گزینهٔ -I فهرستی از دایرکتوریهای جستجو را برای یافتن فایلهای کد منبع مشخص میکند. متغیر محیطی GPROF_PATH نیز میتواند برای انتقال این اطلاعات استفاده شود. این گزینه بیشتر برای خروجی کد منبع حاشیهنویسیشده به کار میرود.
- "-J[symspec]"
- "--no-annotated-source[=symspec]"
- گزینهٔ -J باعث میشود "gprof" کد منبع حاشیهنویسیشده را چاپ نکند. اگر symspec مشخص شده باشد، "gprof" کد منبع حاشیهنویسیشده را چاپ میکند اما نمادهای منطبق را مستثنی میسازد.
- "-L"
- "--print-path"
- بهطور معمول، نام فایلهای منبع بدون مؤلفهٔ مسیر چاپ میشوند. گزینهٔ -L باعث میشود "gprof" نام مسیر کامل فایلهای منبع را چاپ کند؛ این مسیر از اطلاعات اشکالزدایی نمادین در فایل ایمیج تعیین میشود و نسبت به دایرکتوریای است که کامپایلر در آن فراخوانی شده بود.
- "-p[symspec]"
- "--flat-profile[=symspec]"
- گزینهٔ -p باعث میشود "gprof" یک پروفایل تخت چاپ کند. اگر symspec مشخص شده باشد، پروفایل تخت تنها برای نمادهای منطبق چاپ میشود.
- "-P[symspec]"
- "--no-flat-profile[=symspec]"
- گزینهٔ -P باعث میشود "gprof" از چاپ پروفایل تخت خودداری کند. اگر symspec مشخص شده باشد، "gprof" پروفایل تخت را چاپ میکند اما نمادهای منطبق را مستثنی میسازد.
- "-q[symspec]"
- "--graph[=symspec]"
- گزینهٔ -q باعث میشود "gprof" تحلیل گراف فراخوانی را چاپ کند. اگر symspec مشخص شده باشد، گراف فراخوانی تنها برای نمادهای منطبق و فرزندان آنها چاپ میشود.
- "-Q[symspec]"
- "--no-graph[=symspec]"
- گزینهٔ -Q باعث میشود "gprof" از چاپ گراف فراخوانی خودداری کند. اگر symspec مشخص شده باشد، "gprof" گراف فراخوانی را چاپ میکند اما نمادهای منطبق را مستثنی میسازد.
- "-t"
- "--table-length=num"
- گزینهٔ -t باعث میشود در صورت فعال بودن حاشیهنویسی منبع، به تعداد num خط از فعالترین خطوط کد در هر فایل منبع فهرست شوند. مقدار پیشفرض 10 است.
- "-y"
- "--separate-files"
- این گزینه تنها بر خروجی کد منبع حاشیهنویسیشده تأثیر میگذارد. بهطور معمول، "gprof" فایلهای منبع حاشیهنویسیشده را در خروجی استاندارد چاپ میکند. اگر این گزینه مشخص شود، کد منبع حاشیهنویسیشده برای فایلی به نام path/filename در فایل filename-ann تولید میشود. اگر سامانه پرونده نام filename-ann را به نحوی کوتاه کند که روی filename اصلی بازنویسی شود، "gprof" در عوض منبع حاشیهنویسیشده را در فایل filename.ann تولید میکند (اگر نام فایل اصلی دارای پسوند باشد، آن پسوند با .ann جایگزین میشود).
- "-Z[symspec]"
- "--no-exec-counts[=symspec]"
- گزینهٔ -Z باعث میشود "gprof" آمار شمارش توابع و تعداد دفعات فراخوانی هر یک را چاپ نکند. اگر symspec مشخص شود، آمار چاپ میشود، اما نمادهای منطبق مستثنی میگردند.
- "-r"
- "--function-ordering"
- گزینهٔ
--function-ordering باعث
میشود
"gprof" بر
اساس
دادههای
پروفایلینگ،
ترتیب
پیشنهادی
توابع را
برای
برنامه چاپ
کند. این
گزینه
ترتیبی را
پیشنهاد
میدهد که
ممکن است
رفتار
صفحهبندی
(paging)، TLB و
حافظهٔ
پنهان (cache)
برنامه را
در
سامانههایی
که از چینش
دلخواه
توابع در
فایل
اجرایی
پشتیبانی
میکنند،
بهبود بخشد.
جزئیات دقیق نحوهٔ وادار کردن پیونددهنده (linker) به قرار دادن توابع در یک ترتیب مشخص، وابسته به سامانه بوده و خارج از محدودهٔ این راهنما است.
- "-R map_file"
- "--file-ordering map_file"
- گزینهٔ --file-ordering
باعث
میشود
"gprof" بر
اساس
دادههای
پروفایلینگ،
ترتیب
پیشنهادی
پروندههای
شیء .o را در
خط پیوند
برای
برنامه چاپ
کند. این
گزینه
ترتیبی را
پیشنهاد
میکند که
ممکن است
رفتار
صفحهبندی
(paging)، TLB و
حافظهٔ
پنهان (cache)
برنامه را
در
سامانههایی
که از چینش
دلخواه
توابع در
فایل
اجرایی
پشتیبانی
نمیکنند،
بهبود بخشد.
استفاده از آرگومان -a به همراه این گزینه بهشدت توصیه میشود.
آرگومان map_file مسیر فایلی است که نگاشت نام تابع به فایل شیء را فراهم میسازد. قالب این فایل مشابه خروجی برنامهٔ "nm" است.
c-parse.o:00000000 T yyparse c-parse.o:00000004 C yyerrflag c-lang.o:00000000 T maybe_objc_method_name c-lang.o:00000000 T print_lang_statistics c-lang.o:00000000 T recognize_objc_keyword c-decl.o:00000000 T print_lang_identifier c-decl.o:00000000 T print_lang_type ...
برای ساخت یک map_file با GNU "nm"، دستوری شبیه به این را وارد کنید: "nm --extern-only --defined-only -v --print-file-name program-name".
- "-T"
- "--traditional"
- گزینهٔ -T باعث میشود "gprof" خروجی خود را به سبک سنتی BSD چاپ کند.
- "-w width"
- "--width=width"
- عرض خطوط خروجی را برابر با width تنظیم میکند. در حال حاضر تنها هنگام چاپ نمایهٔ توابع در پایین گراف فراخوانی (call graph) استفاده میشود.
- "-x"
- "--all-lines"
- این گزینه تنها بر خروجی کد منبع حاشیهنویسیشده تأثیر میگذارد. بهطور پیشفرض، فقط خطوط ابتدای یک بلوک پایهای (basic-block) حاشیهنویسی میشوند. اگر این گزینه مشخص شود، هر خط در یک بلوک پایهای با تکرار حاشیهنویسی خط اول، نشانهگذاری میگردد. این رفتار مشابه گزینهٔ -a در "tcov" است.
- "--demangle[=style]"
- "--no-demangle"
- این گزینهها کنترل میکنند که آیا نام نمادهای C++ هنگام چاپ خروجی باید بازگشایی (demangle) شوند یا خیر. حالت پیشفرض، بازگشایی نمادها است. گزینهٔ "--no-demangle" را میتوان برای خاموش کردن demangling به کار برد. کامپایلرهای مختلف شیوههای درهمریزی (mangling) متفاوتی دارند. آرگومان اختیاری سبک demangling میتواند برای انتخاب یک سبک مناسب برای کامپایلر شما استفاده شود..SS "گزینههای تحلیل (Analysis Options)"
- "-a"
- "--no-static"
- گزینهٔ -a باعث میشود "gprof" از چاپ توابعی که به صورت ایستا (خصوصی) اعلان شدهاند خودداری کند. (اینها توابعی هستند که نامشان به عنوان سراسری فهرست نشده است و در خارج از فایل/تابع/بلوکی که در آن تعریف شدهاند قابل مشاهده نیستند.) زمان سپریشده در این توابع، فراخوانیها به/از آنها و غیره، همگی به تابعی نسبت داده میشوند که در فایل اجرایی دقیقاً پیش از آن بارگذاری شده است. این گزینه هم بر پروفایل مسطح (flat profile) و هم بر گراف فراخوانی (call graph) تأثیر میگذارد.
- "-c"
- "--static-call-graph"
- گزینهٔ -c باعث میشود گراف فراخوانی برنامه با یک روش ابتکاری (heuristic) تکمیل شود که فضای متن (text space) فایل شیء را بررسی کرده و فراخوانیهای توابع را در کد ماشین باینری شناسایی میکند. از آنجا که رکوردهای معمولی گراف فراخوانی تنها هنگام ورود به توابع ایجاد میشوند، این گزینه فرزندانی را شناسایی میکند که ممکن بود فراخوانی شوند، اما هرگز فراخوانی نشدند. فراخوانیهای توابعی که بدون فعالبودن پروفایلسازی کامپایل شدهاند نیز شناسایی میشوند، اما تنها در صورتی که ورودیهای جدول نماد (symbol table) برای آنها وجود داشته باشد. فراخوانیهای روتینهای کتابخانهٔ پویا معمولاً توسط این گزینه پیدا نمیشوند. والدین یا فرزندانی که از طریق این روش ابتکاری شناسایی شوند، در گراف فراخوانی با تعداد فراخوانی 0 نشان داده میشوند.
- "-D"
- "--ignore-non-functions"
- گزینهٔ -D باعث میشود "gprof" نمادهایی را که به عنوان تابع شناخته نمیشوند نادیده بگیرد. این گزینه در سیستمهایی که از آن پشتیبانی میکنند (برای مثال Solaris و HPUX) دادههای پروفایل دقیقتری ارائه میدهد.
- "-k from/to"
- گزینهٔ -k به شما اجازه میدهد هر یالی (arc) را از نمادهای منطبق با مشخصهٔ نماد from به نمادهای منطبق با مشخصهٔ نماد to از گراف فراخوانی حذف کنید.
- "-l"
- "--line"
- گزینهٔ -l
پروفایلسازی
خطبهخط
را فعال
میکند که
باعث
میشود
موارد
ثبتشده در
هیستوگرام
به جای
توابع، به
خطوط مجزای
کد منبع
اختصاص
یابند. این
قابلیت
تنها با
برنامههایی
کار میکند
که توسط
نسخههای
قدیمیتر
کامپایلر
"gcc"
کامپایل
شده باشند.
نسخههای
جدیدتر
"gcc" به
گونهای
طراحی
شدهاند که
به جای آن
با ابزار
"gcov" کار
کنند.
اگر برنامه با فعالبودن شمارش بلوکهای پایه (basic-block counting) کامپایل شده باشد، این گزینه همچنین مشخص میکند که هر خط از کد چند بار اجرا شده است. اگرچه پروفایلسازی خطبهخط میتواند به تفکیک اینکه برنامه در کجای یک تابع بزرگ زمان خود را صرف میکند کمک کند، اما زمان اجرای "gprof" را نیز به طور چشمگیری افزایش میدهد و خطاهای آماری را تشدید میکند.
- "--inline-file-names"
- این گزینه باعث میشود "gprof" فایل منبع را پس از هر نماد، هم در پروفایل مسطح و هم در گراف فراخوانی چاپ کند. اگر همراه با گزینهٔ -L استفاده شود، مسیر کامل فایل چاپ خواهد شد.
- "-m num"
- "--min-count=num"
- این گزینه تنها بر خروجی تعداد دفعات اجرا تأثیر میگذارد. نمادهایی که کمتر از num بار اجرا شده باشند حذف میشوند (نمایش داده نمیشوند).
- "-nsymspec"
- "--time=symspec"
- گزینهٔ -n باعث میشود "gprof" در تحلیل گراف فراخوانی خود، زمانها را تنها برای نمادهای منطبق با symspec منتشر کند.
- "-Nsymspec"
- "--no-time=symspec"
- گزینهٔ -N باعث میشود "gprof" در تحلیل گراف فراخوانی خود، زمانها را برای نمادهای منطبق با symspec منتشر نکند.
- "-Sfilename"
- "--external-symbol-table=filename"
- گزینهٔ -S باعث میشود "gprof" به جای خواندن جدول نماد از فایل شیء دادهشده (پیشفرض "a.out" است)، یک فایل جدول نماد خارجی مانند /proc/kallsyms را بخواند. این قابلیت برای پروفایلسازی ماژولهای هسته مفید است.
- "-z"
- "--display-unused-functions"
- اگر گزینهٔ -z را مشخص کنید، "gprof" تمام توابع را در پروفایل مسطح ذکر خواهد کرد؛ حتی توابعی که هرگز فراخوانی نشدهاند و هیچ زمانی در آنها صرف نشده است. این ویژگی در ترکیب با گزینهٔ -c برای شناسایی روتینهایی که هرگز فراخوانی نشدهاند مفید است..SS "گزینههای متفرقه (Miscellaneous Options)"
- "-d[num]"
- "--debug[=num]"
- گزینهٔ -d num گزینههای اشکالزدایی را مشخص میکند. اگر num تعیین نشود، تمام اشکالزداییها فعال میشوند.
- "-h"
- "--help"
- گزینهٔ -h نحوهٔ استفاده از خط فرمان را نمایش میدهد.
- "-Oname"
- "--file-format=name"
- قالب فایلهای دادهٔ پروفایل را انتخاب میکند. قالبهای شناختهشده عبارتند از auto (پیشفرض)، bsd، 4.4bsd، magic و prof (هنوز پشتیبانی نمیشود).
- "-s"
- "--sum"
- گزینهٔ -s
باعث
میشود
"gprof"
اطلاعات
فایلهای
دادهٔ
پروفایلی
را که
خوانده است
خلاصهسازی
کرده و یک
فایل دادهٔ
پروفایل به
نام gmon.sum
بنویسد که
شامل تمام
اطلاعات
فایلهای
دادهٔ
پروفایل
خواندهشده
توسط "gprof"
است. فایل gmon.sum
میتواند
یکی از
فایلهای
ورودی
مشخصشده
باشد؛ اثر
این کار
ادغام
دادههای
سایر
فایلهای
ورودی در gmon.sum
است.
در نهایت میتوانید "gprof" را دوباره بدون -s اجرا کنید تا دادههای تجمیعی درون فایل gmon.sum را تحلیل نماید.
- "-v"
- "--version"
- پرچم -v باعث میشود "gprof" شمارهٔ نسخهٔ فعلی را نمایش داده و سپس خارج شود.
گزینههای منسوخشده (Deprecated Options)
این گزینهها با نسخههای جدیدتری که از symspec استفاده میکنند جایگزین شدهاند.
- "-e function_name"
- گزینهٔ -e function به "gprof" میگوید که اطلاعات مربوط به تابع function_name (و فرزندان آن...) را در گراف فراخوانی چاپ نکند. این تابع همچنان بهعنوان فرزند هر تابعی که آن را فراخوانی کند فهرست خواهد شد، اما شمارهٔ نمایهٔ آن بهصورت [not printed] نمایش داده میشود. بیش از یک گزینهٔ -e میتواند مشخص شود؛ با هر گزینهٔ -e تنها یک function_name قابل تعیین است.
- "-E function_name"
- گزینهٔ "-E function" مانند گزینهٔ "-e" عمل میکند، اما زمان صرفشده در تابع (و فرزندانی که از هیچ جای دیگری فراخوانی نشدهاند) برای محاسبهٔ درصدهای زمانی در گراف فراخوانی استفاده نخواهد شد. بیش از یک گزینهٔ -E میتواند مشخص شود؛ با هر گزینهٔ -E تنها یک function_name قابل تعیین است.
- "-f function_name"
- گزینهٔ -f function باعث میشود "gprof" گراف فراخوانی را به تابع function_name و فرزندان آن (و فرزندان فرزندان آنها...) محدود کند. بیش از یک گزینهٔ -f میتواند مشخص شود؛ با هر گزینهٔ -f تنها یک function_name قابل تعیین است.
- "-F function_name"
- گزینهٔ -F function مانند گزینهٔ "-f" عمل میکند، اما تنها زمان صرفشده در تابع و فرزندان آن (و فرزندان فرزندان آنها...) برای تعیین زمان کل و درصدهای زمانی در گراف فراخوانی استفاده خواهد شد. بیش از یک گزینهٔ -F میتواند مشخص شود؛ با هر گزینهٔ -F تنها یک function_name قابل تعیین است. گزینهٔ -F بر گزینهٔ -E اولویت دارد و آن را باطل میکند..SH "فایلها (FILES)"
- "a.out"
- فهرست نامها و فضای متن.
- "gmon.out"
- گراف فراخوانی پویا و پروفایل.
- "gmon.sum"
- خلاصهٔ گراف فراخوانی پویا و پروفایل.
گزارش باگها (BUGS)
ریزهدانگی نمونهبرداری نشان داده شده است، اما در بهترین حالت ماهیتی آماری باقی میماند. ما فرض میکنیم که زمان هر بار اجرای یک تابع را میتوان بهصورت زمان کل تابع تقسیم بر تعداد دفعات فراخوانی آن بیان کرد. بنابراین زمانی که در امتداد یالهای گراف فراخوانی به والدین تابع منتشر میشود، مستقیماً متناسب با تعداد دفعات پیمایش آن یال است.
والدینی که خودشان پروفایلسازی نشدهاند، زمان فرزندان پروفایلشدهشان به آنها منتشر خواهد شد؛ اما در فهرست گراف فراخوانی بهنظر میرسد که بهطور خودبهخودی فراخوانی شدهاند و زمان آنها فراتر از آن منتشر نخواهد شد. بههمین ترتیب، گیرندههای سیگنال (signal catchers)، حتی با وجود پروفایلسازی، بهصورت خودبهخودی بهنظر خواهند رسید (اگرچه به دلایلی مبهمتر). زمان هر فرزند پروفایلشدهٔ گیرندههای سیگنال باید بهدرستی منتشر شود، مگر اینکه گیرندهٔ سیگنال در طول اجرای روال پروفایلسازی فراخوانی شده باشد که در این صورت تمام دادهها از دست میرود.
برنامهٔ پروفایلشده باید "exit"(2) را فراخوانی کرده یا بهطور عادی بازگردد تا اطلاعات پروفایلسازی در فایل gmon.out ذخیره شوند.
همچنین ببینید (SEE ALSO)
monitor(3)، profil(2)، cc(1)، prof(1) و مدخل Info برای gprof.
"An Execution Profiler for Modular Programs", اثر S. Graham، P. Kessler، M. McKusick؛ Software - Practice and Experience, Vol. 13, pp. 671-685, 1983.
"gprof: A Call Graph Execution Profiler", اثر S. Graham، P. Kessler، M. McKusick؛ Proceedings of the SIGPLAN '82 Symposium on Compiler Construction, SIGPLAN Notices, Vol. 17, No 6, pp. 120-126, June 1982.
کپیرایت و تکثیر (COPYRIGHT)
Copyright (c) 1988-2025 Free Software Foundation, Inc.
اجازهٔ کپی، توزیع و/یا تغییر این سند تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخهٔ ۱.۳ یا هر نسخهٔ متأخرتری که توسط بنیاد نرمافزارهای آزاد منتشر شده باشد، اعطا میشود؛ بدون بخشهای تغییرناپذیر، بدون متون روی جلد و بدون متون پشت جلد. یک نسخه از این مجوز در بخشی با عنوان «GNU Free Documentation License» گنجانده شده است.
| 2025-11-10 | binutils-2.45.1 |