2016-08-30 5 views
8

जबकि मैंने सीधे rustc का उपयोग आउटपुट असेंबली के उपयोग पर दस्तावेज़ों को देखा है, मैन्युअल रूप से कार्गो द्वारा उपयोग किए गए कमांड को निकालने और उन्हें असेंबली लिखने के लिए संपादित करना कठिन है।कार्गो के साथ इमारत से असेंबली आउटपुट कैसे प्राप्त करें?

क्या कार्गो चलाने का कोई तरीका है जो असेंबली फाइलें लिखता है?

उत्तर

20

आप सीधे rustc तर्क भेजने के लिए कार्गो के cargo rustc आदेश का उपयोग कर सकते हैं:

cargo rustc -- --emit asm 
ls target/debug/deps/crate_name.s 

अनुकूलित विधानसभा के लिए:

cargo rustc --release -- --emit asm 
ls target/release/deps/crate_name.s 
15

kennytm के जवाब के अलावा, आप भी RUSTFLAGS वातावरण चर का उपयोग कर सकते हैं और मानक कार्गो कमांड का उपयोग करें:

RUSTFLAGS="--emit asm" cargo build 
cat target/debug/deps/project_name-hash.s 

या रिलीज़ मोड (अनुकूलन के साथ) में:

RUSTFLAGS="--emit asm" cargo build --release 
cat target/release/deps/project_name-hash.s 

आप --emit पैरामीटर के लिए विभिन्न मूल्यों पारित कर सकते हैं, सहित (लेकिन सीमित नहीं):

  • mir (जंग मध्यवर्ती प्रतिनिधित्व)
  • llvm-ir (एलएलवीएम इंटरमीडिएट प्रतिनिधित्व)
  • llvm-bc (एलएलवीएम बाइट ई कोड)
  • asm (असेंबली)
संबंधित मुद्दे