.\" Man page generated from reStructuredText .\" by the Docutils 0.23 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "LLVM-IR2VEC" "1" "2026-07-15" "22" "LLVM" .SH "نام (NAME)" llvm-ir2vec \- تولید بردار تعبیه‌شده (Embeddings) از کدهای نمایش میانی LLVM IR .SH "خلاصه دستور (SYNOPSIS)" .sp \fBllvm\-ir2vec\fP [\fIزیردستور\fP] [\fIگزینه‌ها\fP] .SH "توضیحات (DESCRIPTION)" .sp \fBllvm\-ir2vec\fP یک ابزار خط فرمانی مستقل برای IR2Vec و MIR2Vec است. این ابزار بردارهای تعبیه‌شده (Embeddings) را برای هر دو کد نمایش میانی LLVM IR و کد میانی ماشین (MIR) تولید می‌کند و از تولید سه‌تایی‌ها (Triplets) برای آموزش واژگان پشتیبانی می‌کند. .sp این ابزار سه زیردستور اصلی ارائه می‌دهد: .INDENT 0.0 .IP 1. 3 \fBtriplets\fP: تولید سه‌تایی‌های عددی در قالب train2id برای آموزش واژگان از کدهای LLVM IR. .IP 2. 3 \fBentities\fP: تولید فایل‌های نگاشت موجودیت (entity2id.txt) برای آموزش واژگان. .IP 3. 3 \fBembeddings\fP: تولید بردارهای تعبیه‌شده IR2Vec یا MIR2Vec با استفاده از واژگان آموزش‌دیده در سطوح مختلف دانه‌بندی (دستورالعمل، بلوک پایه یا تابع). .UNINDENT .sp این ابزار از دو حالت کاری پشتیبانی می‌کند: .INDENT 0.0 .IP \(bu 2 \fBحالت LLVM IR\fP (\fB\-\-mode=llvm\fP): پردازش فایل‌های بیت‌کد LLVM IR و تولید بردارهای تعبیه‌شده IR2Vec .IP \(bu 2 \fBحالت Machine IR\fP (\fB\-\-mode=mir\fP): پردازش فایل‌های کد میانی ماشین (.mir) و تولید بردارهای تعبیه‌شده MIR2Vec .UNINDENT .sp این ابزار به منظور تسهیل کاربردهای یادگیری ماشین که با LLVM IR یا کدهای میانی ماشین کار می‌کنند طراحی شده است؛ این کار با تبدیل آن‌ها به نمایش‌های عددی قابل استفاده توسط مدل‌های یادگیری ماشین انجام می‌شود. زیردستور \fItriplets\fP به جای سه‌تایی‌های متنی مستقیماً شناسه‌های عددی تولید می‌کند که جریان کاری آماده‌سازی داده‌های آموزشی را بهینه‌تر می‌سازد. .sp \fBنکته:\fP .INDENT 0.0 .INDENT 3.5 برای اطلاعات در مورد استفاده برنامه‌نویسی از IR2Vec و MIR2Vec در گذرها (Passes) و رابط برنامه‌نویسی C++ در LLVM، به بخش IR2Vec Embeddings در مستندات MLGO مراجعه کنید: \% .UNINDENT .UNINDENT .SH "حالت‌های کاری (OPERATION MODES)" .sp این ابزار در دو حالت کار می‌کند: \fBحالت LLVM IR\fP و \fBحالت Machine IR\fP\&. حالت مورد نظر با گزینه \fB\-\-mode\fP انتخاب می‌شود (پیش‌فرض: \fBllvm\fP). .sp حالت‌های تولید سه‌تایی و نگاشت موجودیت برای آماده‌سازی واژگان و داده‌های آموزشی برای بردارهای تعبیه‌شده گراف دانش استفاده می‌شوند. حالت تولید بردار تعبیه‌شده برای تولید بردارها از LLVM IR با استفاده از واژگان از پیش آموزش‌دیده به کار می‌رود. .sp واژگان بردار تعبیه‌شده اولیه (Seed Embedding) در IR2Vec روی مجموعه‌ای بزرگ از کدهای LLVM IR با مدل‌سازی روابط بین کدهای عملیاتی (Opcodes)، انواع (Types) و عملوندها (Operands) به عنوان یک گراف دانش آموزش داده شده است. به این منظور، حالت‌های تولید سه‌تایی و نگاشت موجودیت، سه‌تایی‌ها و نگاشت‌های موجودیت را در قالب استاندارد مورد استفاده برای آموزش بردار گراف دانش تولید می‌کنند (برای جزئیات بیشتر به \% مراجعه کنید). .sp برای جزئیات بیشتر در مورد چگونگی استفاده از این دو حالت برای تولید سه‌تایی‌ها و نگاشت‌های موجودیت، فایل \fIllvm/utils/mlgo\-utils/IR2Vec/generateTriplets.py\fP را ببینید. .SS "تولید سه‌تایی (Triplet Generation)" .sp با زیردستور \fItriplets\fP، ابزار \fBllvm\-ir2vec\fP کدهای LLVM IR یا Machine IR را تحلیل کرده و سه‌تایی‌های عددی شامل شناسه‌های آپ‌کد و شناسه‌های عملوند را استخراج می‌کند. این سه‌تایی‌ها در قالب استاندارد مورد استفاده برای آموزش بردار گراف دانش تولید می‌شوند. این ابزار شناسه‌های عددی را مستقیماً با استفاده از زیرساخت نگاشت واژگان خروجی می‌دهد و نیاز به پیش‌پردازش تبدیل رشته به شناسه را حذف می‌کند. .sp نحوه استفاده برای LLVM IR: .INDENT 0.0 .INDENT 3.5 .sp .EX llvm\-ir2vec triplets \-\-mode=llvm input.bc \-o triplets_train2id.txt .EE .UNINDENT .UNINDENT .sp نحوه استفاده برای Machine IR: .INDENT 0.0 .INDENT 3.5 .sp .EX llvm\-ir2vec triplets \-\-mode=mir input.mir \-o triplets_train2id.txt .EE .UNINDENT .UNINDENT .SS "تولید نگاشت موجودیت (Entity Mapping Generation)" .sp با زیردستور \fIentities\fP، ابزار \fBllvm\-ir2vec\fP نگاشت‌های موجودیت پشتیبانی‌شده توسط IR2Vec یا MIR2Vec را در قالب استاندارد مورد استفاده برای آموزش بردار گراف دانش تولید می‌کند. این زیردستور تمام موجودیت‌های پشتیبانی‌شده را همراه با شناسه‌های عددی متناظر آن‌ها خروجی می‌دهد. .sp برای LLVM IR، موجودیت‌ها شامل آپ‌کدها، انواع و عملوندها هستند. برای Machine IR، موجودیت‌ها شامل آپ‌کدهای ماشین، عملوندهای متداول و کلاس‌های ثبات (هم فیزیکی و هم مجازی) می‌باشند. .sp نحوه استفاده برای LLVM IR: .INDENT 0.0 .INDENT 3.5 .sp .EX llvm\-ir2vec entities \-\-mode=llvm \-o entity2id.txt .EE .UNINDENT .UNINDENT .sp نحوه استفاده برای Machine IR: .INDENT 0.0 .INDENT 3.5 .sp .EX llvm\-ir2vec entities \-\-mode=mir input.mir \-o entity2id.txt .EE .UNINDENT .UNINDENT .sp \fBنکته:\fP .INDENT 0.0 .INDENT 3.5 برای حالت LLVM IR، نگاشت موجودیت مستقل از معماری مقصد است و نیازی به فایل ورودی ندارد. برای حالت Machine IR، یک فایل ورودی .mir برای تعیین معماری مقصد مورد نیاز است، زیرا نگاشت‌های موجودیت بر اساس مقصد تغییر می‌کنند (معماری‌های مختلف مجموعه‌دستورالعمل‌ها و کلاس‌های ثبات متفاوتی دارند). .UNINDENT .UNINDENT .SS "تولید بردار تعبیه‌شده (Embedding Generation)" .sp با زیردستور \fIembeddings\fP، ابزار \fBllvm\-ir2vec\fP از یک واژگان از پیش آموزش‌دیده برای تولید بردارهای تعبیه‌شده عددی برای LLVM IR یا Machine IR در سطوح مختلف دانه‌بندی استفاده می‌کند. .sp مثال نحوه استفاده برای LLVM IR: .INDENT 0.0 .INDENT 3.5 .sp .EX llvm\-ir2vec embeddings \-\-mode=llvm \-\-ir2vec\-vocab\-path=vocab.json \-\-ir2vec\-kind=symbolic \-\-level=func input.bc \-o embeddings.txt .EE .UNINDENT .UNINDENT .sp مثال نحوه استفاده برای Machine IR: .INDENT 0.0 .INDENT 3.5 .sp .EX llvm\-ir2vec embeddings \-\-mode=mir \-\-mir2vec\-vocab\-path=vocab.json \-\-level=func input.mir \-o embeddings.txt .EE .UNINDENT .UNINDENT .SH "گزینه‌ها (OPTIONS)" .sp گزینه‌های عمومی (قابل استفاده در هر دو حالت LLVM IR و Machine IR): .INDENT 0.0 .TP .B \-\-mode= تعیین حالت عملکرد. مقادیر معتبر عبارتند از: .INDENT 7.0 .IP \(bu 2 \fBllvm\fP \- پردازش فایل‌های بیت‌کد LLVM IR (پیش‌فرض) .IP \(bu 2 \fBmir\fP \- پردازش فایل‌های کد میانی ماشین (.mir) .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-o تعیین نام فایل خروجی. از \fB\-\fP برای نوشتن در خروجی استاندارد استفاده کنید (پیش‌فرض). .UNINDENT .INDENT 0.0 .TP .B \-\-help چاپ خلاصه‌ای از گزینه‌های خط فرمان. .UNINDENT .sp گزینه‌های مختص زیردستورها: .sp زیردستور \fBembeddings\fP: .INDENT 0.0 .TP .B فایل ورودی LLVM IR/بیت‌کد (.ll/.bc) یا فایل Machine IR (.mir) برای پردازش. این آرگومان مکانی برای زیردستور \fIembeddings\fP الزامی است. .UNINDENT .INDENT 0.0 .TP .B \-\-level= تعیین سطح تولید بردار تعبیه‌شده. مقادیر معتبر عبارتند از: .INDENT 7.0 .IP \(bu 2 \fBinst\fP \- تولید بردار تعبیه‌شده در سطح دستورالعمل .IP \(bu 2 \fBbb\fP \- تولید بردار تعبیه‌شده در سطح بلوک پایه .IP \(bu 2 \fBfunc\fP \- تولید بردار تعبیه‌شده در سطح تابع (پیش‌فرض) .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-\-function= پردازش تنها تابع مشخص‌شده به جای تمام توابع موجود در ماژول. .UNINDENT .sp \fBگزینه‌های مختص IR2Vec\fP (برای \fB\-\-mode=llvm\fP): .INDENT 0.0 .TP .B \-\-ir2vec\-kind= تعیین نوع بردارهای تعبیه‌شده IR2Vec برای تولید. مقادیر معتبر عبارتند از: .INDENT 7.0 .IP \(bu 2 \fBsymbolic\fP \- تولید بردارهای نمادین (پیش‌فرض) .IP \(bu 2 \fBflow\-aware\fP \- تولید بردارهای آگاه از جریان (Flow-aware) .UNINDENT .sp بردارهای آگاه از جریان روابط جریان کنترل بین دستورالعمل‌ها را در نظر می‌گیرند، در حالی که بردارهای نمادین بر نمایش نمادین دستورالعمل‌ها تمرکز دارند. .UNINDENT .INDENT 0.0 .TP .B \-\-ir2vec\-vocab\-path= تعیین مسیر فایل واژگان IR2Vec (برای تولید بردار تعبیه‌شده LLVM IR الزامی است). فایل واژگان باید در قالب JSON باشد و حاوی واژگان آموزش‌دیده برای تولید بردار تعبیه‌شده باشد. برای فایل‌های واژگان از پیش آموزش‌دیده به \fIllvm/lib/Analysis/models\fP مراجعه کنید. .UNINDENT .INDENT 0.0 .TP .B \-\-ir2vec\-opc\-weight= تعیین وزن بردارهای آپ‌کد (پیش‌فرض: 1.0). این گزینه اهمیت نسبی کدهای عملیاتی دستورالعمل را در بردار تعبیه‌شده نهایی کنترل می‌کند. .UNINDENT .INDENT 0.0 .TP .B \-\-ir2vec\-type\-weight= تعیین وزن بردارهای نوع (پیش‌فرض: 0.5). این گزینه اهمیت نسبی اطلاعات نوع را در بردار تعبیه‌شده نهایی کنترل می‌کند. .UNINDENT .INDENT 0.0 .TP .B \-\-ir2vec\-arg\-weight= تعیین وزن بردارهای آرگومان (پیش‌فرض: 0.2). این گزینه اهمیت نسبی اطلاعات عملوند را در بردار تعبیه‌شده نهایی کنترل می‌کند. .UNINDENT .sp \fBگزینه‌های مختص MIR2Vec\fP (برای \fB\-\-mode=mir\fP): .INDENT 0.0 .TP .B \-\-mir2vec\-vocab\-path= تعیین مسیر فایل واژگان MIR2Vec (برای تولید بردار تعبیه‌شده Machine IR الزامی است). فایل واژگان باید در قالب JSON باشد و حاوی واژگان آموزش‌دیده برای تولید بردار تعبیه‌شده باشد. .UNINDENT .INDENT 0.0 .TP .B \-\-mir2vec\-kind= تعیین نوع بردارهای تعبیه‌شده MIR2Vec برای تولید. مقادیر معتبر عبارتند از: .INDENT 7.0 .IP \(bu 2 \fBsymbolic\fP \- تولید بردارهای نمادین (پیش‌فرض) .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \-\-mir2vec\-opc\-weight= تعیین وزن بردارهای آپ‌کد ماشین (پیش‌فرض: 1.0). این گزینه اهمیت نسبی کدهای عملیاتی دستورالعمل‌های ماشین را در بردار تعبیه‌شده نهایی کنترل می‌کند. .UNINDENT .INDENT 0.0 .TP .B \-\-mir2vec\-common\-operand\-weight= تعیین وزن بردارهای عملوند متداول (پیش‌فرض: 1.0). این گزینه اهمیت نسبی انواع عملوندهای متداول را در بردار تعبیه‌شده نهایی کنترل می‌کند. .UNINDENT .INDENT 0.0 .TP .B \-\-mir2vec\-reg\-operand\-weight= تعیین وزن بردارهای عملوند ثبات (پیش‌فرض: 1.0). این گزینه اهمیت نسبی عملوندهای ثبات را در بردار تعبیه‌شده نهایی کنترل می‌کند. .UNINDENT .sp زیردستور \fBtriplets\fP: .INDENT 0.0 .TP .B فایل ورودی LLVM IR/بیت‌کد (.ll/.bc) یا فایل Machine IR (.mir) برای پردازش. این آرگومان مکانی برای زیردستور \fItriplets\fP الزامی است. .UNINDENT .sp زیردستور \fBentities\fP: .INDENT 0.0 .TP .B فایل ورودی Machine IR (.mir) برای پردازش. این آرگومان مکانی برای زیردستور \fIentities\fP هنگام استفاده از \fB\-\-mode=mir\fP الزامی است، زیرا نگاشت‌های موجودیت وابسته به معماری مقصد هستند. برای \fB\-\-mode=llvm\fP نیازی به فایل ورودی نیست زیرا نگاشت‌های موجودیت IR2Vec مستقل از مقصد هستند. .UNINDENT .SH "قالب خروجی (OUTPUT FORMAT)" .SS "خروجی حالت سه‌تایی (Triplet Mode Output)" .sp در حالت سه‌تایی، خروجی شامل سه‌تایی‌های عددی در قالب train2id همراه با هدرهای متادیتا است. این قالب شامل موارد زیر است: .INDENT 0.0 .INDENT 3.5 .sp .EX MAX_RELATION= \&... .EE .UNINDENT .UNINDENT .sp هر خط پس از هدر متادیتا نشان‌دهنده یک رابطه دستورالعمل است، همراه با شناسه‌های عددی برای موجودیت مبدأ (Head Entity)، موجودیت مقصد (Tail Entity) و نوع رابطه (Relation Type). هدر متادیتا (MAX_RELATION) بیشینه شناسه رابطه استفاده‌شده را مشخص می‌کند. .sp \fBانواع رابطه (Relation Types):\fP .INDENT 0.0 .TP .B برای LLVM IR (IR2Vec): .INDENT 7.0 .IP \(bu 2 \fB0\fP = رابطه نوع (دستورالعمل به نوع آن) .IP \(bu 2 \fB1\fP = رابطه بعدی (دستورالعمل‌های متوالی) .IP \(bu 2 \fB2+\fP = روابط آرگومان (Arg0, Arg1, Arg2, ...) .UNINDENT .TP .B برای Machine IR (MIR2Vec): .INDENT 7.0 .IP \(bu 2 \fB0\fP = رابطه بعدی (دستورالعمل‌های متوالی) .IP \(bu 2 \fB1+\fP = روابط آرگومان (Arg0, Arg1, Arg2, ...) .UNINDENT .UNINDENT .sp \fBشناسه‌های موجودیت (Entity IDs):\fP .sp برای LLVM IR: شناسه‌های موجودیت نشان‌دهنده کدهای عملیاتی (Opcodes)، انواع و عملوندها طبق تعریف واژگان IR2Vec هستند. .sp برای Machine IR: شناسه‌های موجودیت نشان‌دهنده آپ‌کدهای ماشین، عملوندهای متداول (مقدار بی‌واسطه، نمایه فریم و غیره)، کلاس‌های ثبات فیزیکی و کلاس‌های ثبات مجازی طبق تعریف واژگان MIR2Vec هستند. چیدمان موجودیت وابسته به معماری مقصد است. .SS "خروجی حالت موجودیت (Entity Mode Output)" .sp در حالت موجودیت، خروجی شامل نگاشت‌های موجودیت در قالب زیر است: .INDENT 0.0 .INDENT 3.5 .sp .EX \&... .EE .UNINDENT .UNINDENT .sp خط نخست شامل تعداد کل موجودیت‌ها است، و پس از آن در هر خط یک نگاشت موجودیت با رشته موجودیت و شناسه عددی جداشده با تب (Tab) قرار دارد. .sp برای LLVM IR، موجودیت‌ها شامل آپ‌کدهای دستورالعمل (مانند \(dqAdd\(dq، \(dqRet\(dq)، انواع (مانند \(dqINT\(dq، \(dqPTR\(dq) و انواع عملوند هستند. .sp برای Machine IR، موجودیت‌ها شامل آپ‌کدهای ماشین (مانند \(dqCOPY\(dq، \(dqADD\(dq)، عملوندهای متداول (مانند \(dqImmediate\(dq، \(dqFrameIndex\(dq)، کلاس‌های ثبات فیزیکی (مانند \(dqPhyReg_GR32\(dq) و کلاس‌های ثبات مجازی (مانند \(dqVirtReg_GR32\(dq) هستند. .SS "خروجی حالت بردار تعبیه‌شده (Embedding Mode Output)" .sp در حالت بردار تعبیه‌شده، قالب خروجی به سطح مشخص‌شده بستگی دارد: .INDENT 0.0 .IP \(bu 2 \fBسطح تابع (Function Level)\fP: یک بردار تعبیه‌شده به ازای هر تابع .IP \(bu 2 \fBسطح بلوک پایه (Basic Block Level)\fP: یک بردار تعبیه‌شده به ازای هر بلوک پایه، گروه‌بندی‌شده بر اساس تابع .IP \(bu 2 \fBسطح دستورالعمل (Instruction Level)\fP: یک بردار تعبیه‌شده به ازای هر دستورالعمل، گروه‌بندی‌شده بر اساس بلوک پایه و تابع .UNINDENT .sp هر بردار تعبیه‌شده به صورت یک بردار ممیز شناور (Floating Point) نمایش داده می‌شود. .SH "وضعیت خروج (EXIT STATUS)" .sp \fBllvm\-ir2vec\fP در صورت موفقیت مقدار 0 و در صورت بروز خطا مقداری غیرصفر برمی‌گرداند. .sp موارد متداول خطا عبارتند از: .INDENT 0.0 .IP \(bu 2 فایل ورودی نامعتبر یا ناموجود .IP \(bu 2 فایل واژگان ناموجود یا نامعتبر (در حالت بردار تعبیه‌شده) .IP \(bu 2 تابع مشخص‌شده در ماژول یافت نشد .IP \(bu 2 گزینه‌های خط فرمان نامعتبر .UNINDENT .SH "همچنین ببینید (SEE ALSO)" .sp بهینه‌سازی هدایت‌شده با یادگیری ماشین (MLGO) \% .sp برای اطلاعات بیشتر در مورد الگوریتم و رویکرد IR2Vec ببینید: IR2Vec: LLVM IR Based Scalable Program Embeddings \%\&. .sp برای اطلاعات بیشتر در مورد الگوریتم و رویکرد MIR2Vec ببینید: RL4ReAl: Reinforcement Learning for Register Allocation \%\&. .SH "نویسنده (AUTHOR)" نگهداری‌شده توسط تیم LLVM (https://llvm.org). .SH "حق نشر (COPYRIGHT)" 2003-2026, LLVM Project .\" End of generated man page.