LLVM-BCANALYZER(1) LLVM LLVM-BCANALYZER(1)

llvm-bcanalyzer - تحلیل‌گر بیت‌کد LLVM

llvm-bcanalyzer [options] [filename]

دستور llvm-bcanalyzer ابزار کوچکی برای تحلیل فایل‌های بیت‌کد (bitcode) است. این ابزار یک فایل بیت‌کد (مانند فایلی که با ابزار llvm-as تولید شده است) را خوانده و یک گزارش آماری از محتویات فایل بیت‌کد ارائه می‌دهد. این ابزار همچنین می‌تواند نسخه‌ای سطح پایین اما انسان‌خوانا از فایل بیت‌کد را تخلیه (dump) کند. این ابزار احتمالاً به جز برای کسانی که مستقیماً با قالب فایل بیت‌کد کار می‌کنند، کاربرد یا جذابیت چندانی ندارد. بیشتر کاربران LLVM می‌توانند این ابزار را نادیده بگیرند.

اگر filename مشخص نشود یا - باشد، llvm-bcanalyzer ورودی خود را از ورودی استاندارد می‌خواند. این ویژگی برای استفاده از این ابزار در یک خط لوله (pipeline) مفید است. خروجی در خروجی استاندارد نوشته می‌شود.

باعث می‌شود llvm-bcanalyzer بیت‌کد را در یک قالب انسان‌خوانا تخلیه (dump) کند. این قالب تفاوت چشمگیری با اسمبلی LLVM دارد و جزئیاتی درباره نحوه کدگذاری (encoding) فایل بیت‌کد ارائه می‌دهد.
خلاصه‌ای از گزینه‌های خط فرمان را چاپ می‌کند.

اگر llvm-bcanalyzer با موفقیت انجام شود، با مقدار 0 خارج می‌شود. در غیر این صورت، چنانچه خطایی رخ دهد، با یک مقدار غیرصفر (معمولاً 1) خارج خواهد شد.

موارد زیر همواره توسط llvm-bcanalyzer چاپ می‌شوند. این موارد تشکیل‌دهنده خروجی خلاصه هستند.

تحلیل بیت‌کد ماژول (Bitcode Analysis Of Module)

این مورد صرفاً نام ماژولی را نشان می‌دهد که تحلیل بیت‌کد برای آن تولید می‌شود.

شماره نسخه بیت‌کد (Bitcode Version Number)

نسخه بیت‌کد (نه نسخه LLVM) فایلی که توسط تحلیل‌گر خوانده شده است.

اندازه فایل (File Size)

اندازه کل فایل بیت‌کد بر حسب بایت.

بایت‌های ماژول (Module Bytes)

اندازه بلوک ماژول بر حسب بایت. درصد بیان‌شده نسبت به اندازه فایل (File Size) است.

بایت‌های توابع (Function Bytes)

اندازه تمام بلوک‌های توابع بر حسب بایت. درصد بیان‌شده نسبت به اندازه فایل (File Size) است.

بایت‌های انواع سراسری (Global Types Bytes)

اندازه استخر انواع سراسری (Global Types Pool) بر حسب بایت. درصد بیان‌شده نسبت به اندازه فایل (File Size) محاسبه می‌شود. این مقدار، اندازه تعاریف تمام انواع داده در فایل بیت‌کد است.

بایت‌های استخر مقادیر ثابت (Constant Pool Bytes)

اندازه بلوک‌های استخر مقادیر ثابت بر حسب بایت. درصد بیان‌شده نسبت به اندازه فایل (File Size) محاسبه می‌شود.

بایت‌های متغیرهای سراسری ماژول (Module Globals Bytes)

اندازه تعاریف متغیرهای سراسری و مقداردهنده‌های اولیه آن‌ها بر حسب بایت. درصد بیان‌شده نسبت به اندازه فایل (File Size) محاسبه می‌شود.

بایت‌های فهرست دستورالعمل‌ها (Instruction List Bytes)

اندازه تمام فهرست‌های دستورالعمل در تمام توابع بر حسب بایت. درصد بیان‌شده نسبت به اندازه فایل (File Size) محاسبه می‌شود. توجه داشته باشید که این مقدار در بایت‌های توابع (Function Bytes) نیز گنجانده شده است.

بایت‌های جدول فشرده‌سازی (Compaction Table Bytes)

اندازه تمام جدول‌های فشرده‌سازی در تمام توابع بر حسب بایت. درصد بیان‌شده نسبت به اندازه فایل (File Size) محاسبه می‌شود. توجه داشته باشید که این مقدار در بایت‌های توابع (Function Bytes) نیز گنجانده شده است.

بایت‌های جدول نمادها (Symbol Table Bytes)

اندازه تمام جدول‌های نماد در تمام توابع بر حسب بایت. درصد بیان‌شده نسبت به اندازه فایل (File Size) محاسبه می‌شود. توجه داشته باشید که این مقدار در بایت‌های توابع (Function Bytes) نیز گنجانده شده است.

بایت‌های کتابخانه‌های وابسته (Dependent Libraries Bytes)

اندازه فهرست کتابخانه‌های وابسته در ماژول بر حسب بایت. درصد بیان‌شده نسبت به اندازه فایل (File Size) محاسبه می‌شود. توجه داشته باشید که این مقدار در بایت‌های سراسری ماژول (Module Globals Bytes) نیز گنجانده شده است.

تعداد بلوک‌های بیت‌کد (Number Of Bitcode Blocks)

تعداد کل بلوک‌ها از هر نوع در فایل بیت‌کد.

تعداد توابع (Number Of Functions)

تعداد کل تعاریف توابع در فایل بیت‌کد.

تعداد انواع (Number Of Types)

تعداد کل انواع تعریف‌شده در استخر انواع سراسری (Global Types Pool).

تعداد مقادیر ثابت (Number Of Constants)

تعداد کل مقادیر ثابت (از هر نوعی) که در استخر مقادیر ثابت (Constant Pool) تعریف شده‌اند.

تعداد بلوک‌های پایه (Number Of Basic Blocks)

تعداد کل بلوک‌های پایه (basic blocks) تعریف‌شده در تمام توابع فایل بیت‌کد.

تعداد دستورالعمل‌ها (Number Of Instructions)

تعداد کل دستورالعمل‌های تعریف‌شده در تمام توابع فایل بیت‌کد.

تعداد دستورالعمل‌های طولانی (Number Of Long Instructions)

تعداد کل دستورالعمل‌های طولانی تعریف‌شده در تمام توابع فایل بیت‌کد. دستورالعمل‌های طولانی آن‌هایی هستند که بیش از ۴ بایت فضا اشغال می‌کنند. به‌طور معمول، دستورالعمل‌های طولانی شامل GetElementPtr با چندین اندیس، گره‌های PHI، و فراخوانی توابع با تعداد زیادی آرگومان هستند.

تعداد عملوندها (Number Of Operands)

تعداد کل عملوندهای استفاده‌شده در تمام دستورالعمل‌های فایل بیت‌کد.

تعداد جدول‌های فشرده‌سازی (Number Of Compaction Tables)

تعداد کل جدول‌های فشرده‌سازی در تمام توابع فایل بیت‌کد.

تعداد جدول‌های نمادها (Number Of Symbol Tables)

تعداد کل جدول‌های نماد در تمام توابع فایل بیت‌کد.

تعداد کتابخانه‌های وابسته (Number Of Dependent Libs)

تعداد کل کتابخانه‌های وابسته یافت‌شده در فایل بیت‌کد.

اندازه کل دستورالعمل‌ها (Total Instruction Size)

اندازه کل دستورالعمل‌ها در تمام توابع فایل بیت‌کد.

میانگین اندازه دستورالعمل‌ها (Average Instruction Size)

میانگین تعداد بایت‌ها به ازای هر دستورالعمل در تمام توابع فایل بیت‌کد. این مقدار از تقسیم اندازه کل دستورالعمل‌ها (Total Instruction Size) بر تعداد دستورالعمل‌ها (Number Of Instructions) به دست می‌آید.

بیشینه شماره شیار نوع (Maximum Type Slot Number)

بزرگ‌ترین مقدار استفاده‌شده برای شماره شیار (slot number) یک نوع داده. مقادیر بزرگ‌تر شماره شیار، بایت‌های بیشتری را برای کدگذاری اشغال می‌کنند.

بیشینه شماره شیار مقدار (Maximum Value Slot Number)

بزرگ‌ترین مقدار استفاده‌شده برای شماره شیار (slot number) یک مقدار (Value). مقادیر بزرگ‌تر شماره شیار، بایت‌های بیشتری را برای کدگذاری اشغال می‌کنند.

بایت به ازای هر مقدار (Bytes Per Value)

میانگین اندازه تعریف یک مقدار (Value) از هر نوعی. این مقدار از تقسیم اندازه فایل (File Size) بر تعداد کل مقادیر از هر نوع به دست می‌آید.

بایت به ازای هر متغیر سراسری (Bytes Per Global)

میانگین اندازه یک تعریف سراسری (مقادیر ثابت و متغیرهای سراسری).

بایت به ازای هر تابع (Bytes Per Function)

میانگین تعداد بایت‌ها به ازای هر تعریف تابع. این مقدار از تقسیم بایت‌های توابع (Function Bytes) بر تعداد توابع (Number Of Functions) به دست می‌آید.

تعداد اعداد صحیح ۳۲ بیتی VBR (# of VBR 32-bit Integers)

تعداد کل اعداد صحیح ۳۲ بیتی کدگذاری‌شده با استفاده از طرح کدگذاری نرخ بیت متغیر (Variable Bit Rate یا VBR).

تعداد اعداد صحیح ۶۴ بیتی VBR (# of VBR 64-bit Integers)

تعداد کل اعداد صحیح ۶۴ بیتی کدگذاری‌شده با استفاده از طرح کدگذاری نرخ بیت متغیر (Variable Bit Rate یا VBR).

بایت‌های فشرده‌شده VBR (# of VBR Compressed Bytes)

تعداد کل بایت‌های مصرف‌شده توسط اعداد صحیح ۳۲ بیتی و ۶۴ بیتی که از طرح کدگذاری نرخ بیت متغیر (Variable Bit Rate یا VBR) استفاده می‌کنند.

بایت‌های گسترش‌یافته VBR (# of VBR Expanded Bytes)

تعداد کل بایت‌هایی که اعداد صحیح ۳۲ بیتی و ۶۴ بیتی در صورت عدم فشرده‌سازی با طرح کدگذاری نرخ بیت متغیر (Variable Bit Rate)، مصرف می‌کردند.

بایت‌های صرفه‌جویی‌شده با VBR (Bytes Saved With VBR)

تعداد کل بایت‌های صرفه‌جویی‌شده با استفاده از طرح کدگذاری نرخ بیت متغیر (Variable Bit Rate یا VBR). درصد بیان‌شده نسبت به # of VBR Expanded Bytes (بایت‌های گسترش‌یافته VBR) سنجیده می‌شود.

تعاریف زیر تنها در صورتی نمایش داده می‌شوند که گزینهٔ -nodetails مشخص نشده باشد. خروجی تفصیلی، اطلاعات تکمیلی را بر پایهٔ هر تابع ارائه می‌دهد.

Type

امضای نوع تابع.

Byte Size

تعداد کل بایت‌های موجود در بلوک تابع.

Basic Blocks

تعداد بلوک‌های پایهٔ تعریف‌شده توسط تابع.

Instructions

تعداد دستورالعمل‌های تعریف‌شده توسط تابع.

Long Instructions

تعداد دستورالعمل‌هایی در تابع که از قالب دستورالعمل طولانی استفاده می‌کنند.

Operands

تعداد عملوندهای استفاده‌شده توسط تمام دستورالعمل‌ها در تابع.

Instruction Size

تعداد بایت‌های مصرف‌شده توسط دستورالعمل‌ها در تابع.

Average Instruction Size

میانگین تعداد بایت‌های مصرف‌شده توسط دستورالعمل‌ها در تابع. این مقدار با تقسیم Instruction Size بر Instructions محاسبه می‌شود.

Bytes Per Instruction

میانگین تعداد بایت‌های استفاده‌شده توسط تابع به‌ازای هر دستورالعمل. این مقدار با تقسیم Byte Size بر Instructions محاسبه می‌شود. توجه داشته باشید که این مقدار با Average Instruction Size یکسان نیست؛ چرا که عددی را متناسب با اندازهٔ کل تابع محاسبه می‌کند، نه صرفاً اندازهٔ فهرست دستورالعمل‌ها.

Number of VBR 32-bit Integers

تعداد کل اعداد صحیح ۳۲ بیتی یافت‌شده در این تابع (برای هر کاربردی).

Number of VBR 64-bit Integers

تعداد کل اعداد صحیح ۶۴ بیتی یافت‌شده در این تابع (برای هر کاربردی).

Number of VBR Compressed Bytes

تعداد کل بایت‌های مصرف‌شده در این تابع توسط اعداد صحیح ۳۲ بیتی و ۶۴ بیتی که از طرح کدگذاری نرخ بیت متغیر (Variable Bit Rate یا VBR) استفاده می‌کنند.

Number of VBR Expanded Bytes

تعداد کل بایت‌هایی در این تابع که در صورت فشرده نشدن اعداد صحیح ۳۲ بیتی و ۶۴ بیتی با طرح کدگذاری نرخ بیت متغیر (Variable Bit Rate یا VBR)، مصرف می‌شدند.

Bytes Saved With VBR

تعداد کل بایت‌های ذخیره‌شده در این تابع با استفاده از طرح کدگذاری نرخ بیت متغیر (Variable Bit Rate یا VBR). این درصد نسبت به # of VBR Expanded Bytes سنجیده می‌شود.

llvm-dis(1) <llvm-dis.html>, LLVM Bitcode File Format <>

توسط تیم LLVM نگهداری می‌شود (https://llvm.org).

2003-2026, LLVM Project

2026-07-15 22